# HG changeset patch # User Alan Mackenzie # Date 1214601166 0 # Node ID 59d141ae8c746334252880acc6e764f8d16a5fef # Parent ced419734e6f62544eb392bf709039f43807eefb 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: ---------------------------------------------------------------------- diff -r ced419734e6f -r 59d141ae8c74 lisp/progmodes/cc-defs.el --- a/lisp/progmodes/cc-defs.el Fri Jun 27 21:09:47 2008 +0000 +++ b/lisp/progmodes/cc-defs.el Fri Jun 27 21:12:46 2008 +0000 @@ -1440,6 +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. + (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 @@ '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 -r ced419734e6f -r 59d141ae8c74 lisp/progmodes/cc-mode.el --- a/lisp/progmodes/cc-mode.el Fri Jun 27 21:09:47 2008 +0000 +++ b/lisp/progmodes/cc-mode.el Fri Jun 27 21:12:46 2008 +0000 @@ -285,8 +285,9 @@ ;; 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)