summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/progmodes/cc-defs.el11
-rw-r--r--lisp/progmodes/cc-mode.el5
2 files changed, 14 insertions, 2 deletions
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index dcdcdaec728..d1a1a75f303 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -1440,6 +1440,14 @@ non-nil, a caret is prepended to invert the set."
'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.
+ (let ((beginning-of-defun-function
+ (lambda (&optional arg)
+ (not (eq arg nil)))))
+ (if (beginning-of-defun 1)
+ (setq list (cons 'argumentative-bod-function list))))
+
(let ((buf (generate-new-buffer " test"))
parse-sexp-lookup-properties
parse-sexp-ignore-comments
@@ -1539,6 +1547,9 @@ might be present:
'8-bit 8 bit syntax entry flags (XEmacs style).
'1-bit 1 bit syntax entry flags (Emacs style).
+'argumentative-bod-function beginning-of-defun passes ARG through
+ to a non-null beginning-of-defun-function. It is assumed
+ the end-of-defun does the same thing.
'syntax-properties It works to override the syntax for specific characters
in the buffer with the 'syntax-table property. It's
always set - CC Mode no longer works in emacsen without
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 9076491db34..747b35be00a 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -285,8 +285,9 @@ control). See \"cc-mode.el\" for more info."
;; RMS says don't make these the default.
;; (April 2006): RMS has now approved these commands as defaults.
- (define-key c-mode-base-map "\e\C-a" 'c-beginning-of-defun)
- (define-key c-mode-base-map "\e\C-e" 'c-end-of-defun)
+ (unless (memq 'argumentative-bod-function c-emacs-features)
+ (define-key c-mode-base-map "\e\C-a" 'c-beginning-of-defun)
+ (define-key c-mode-base-map "\e\C-e" 'c-end-of-defun))
(define-key c-mode-base-map "\C-c\C-n" 'c-forward-conditional)
(define-key c-mode-base-map "\C-c\C-p" 'c-backward-conditional)