From 13ac2398ff34ce51d1f3b7cafa2aea9af99cf203 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Fri, 27 Jun 2008 21:12:46 +0000 Subject: [PATCH] cc-mode.el (c-mode-base-map): Don't bind C-M-[ae] to the CC Mode specific functions; this is no longer needed, since {beginning,end}-of-defun now pass ARG to ...-of-defun-function. cc-defs.el (c-emacs-features): new feature 'argumentative-bod-function. ---------------------------------------------------------------------- cc-defs.el cc-mode.el CVS: ---------------------------------------------------------------------- --- lisp/progmodes/cc-defs.el | 11 +++++++++++ lisp/progmodes/cc-mode.el | 5 +++-- 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) -- 2.39.2