diff lisp/progmodes/cc-defs.el @ 97430:d76aacb7f6e4

(c-emacs-features): Check beginning-of-defun-raw instead of beginning-of-defun, and avoid moving point during the test.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 11 Aug 2008 21:38:04 +0000
parents 59d141ae8c74
children 3f5d22fa3877
line wrap: on
line diff
--- a/lisp/progmodes/cc-defs.el	Mon Aug 11 21:37:52 2008 +0000
+++ b/lisp/progmodes/cc-defs.el	Mon Aug 11 21:38:04 2008 +0000
@@ -1440,13 +1440,14 @@
 			 '1-bit)
 		       list)))
 
-    ;; In Emacs >= 23, beginning-of-defun will passes its parameter to
-    ;; beginning-of-defun-function.  Assume end-of-defun does the same.
+    ;; In Emacs >= 23, beginning-of-defun-raw passes its argument to
+    ;; beginning-of-defun-function.  Assume end-of-defun does likewise.
     (let ((beginning-of-defun-function
 	   (lambda (&optional arg)
 	     (not (eq arg nil)))))
-      (if (beginning-of-defun 1)
-	  (setq list (cons 'argumentative-bod-function list))))
+      (save-excursion
+	(if (beginning-of-defun-raw 1)
+	    (setq list (cons 'argumentative-bod-function list)))))
 
     (let ((buf (generate-new-buffer " test"))
 	  parse-sexp-lookup-properties