CC Mode now uses the new :after-hook feature of define-derived-mode
commita8231e00cbad60652ff7ab6ae51a758f1d939971
authorAlan Mackenzie <acm@muc.de>
Mon, 9 May 2016 17:49:45 +0000 (9 17:49 +0000)
committerAlan Mackenzie <acm@muc.de>
Mon, 9 May 2016 17:49:45 +0000 (9 17:49 +0000)
treeabbdd240734fb41710e542335fea763e12601596
parent608f2bd0ac9d950a04ad73bf36d96d25b469b9be
CC Mode now uses the new :after-hook feature of define-derived-mode

It now runs internal variable setting functions after the mode hooks, no
longer runs the mode hooks twice, and declares the configuration variables for
noise macros and macros with semicolons as safe variables (when given suitable
arguments).

Fixes bug #16759 and bug #23476.

* .dir-locals: Put the c-noise-macros-with-paren-names setting back into the C
Mode value.

* lisp/progmodes/cc-mode.el: (c-basic-common-init): Remove the call to
c-make-macro-with-semi-re.
(c-mode, c++-mode, objc-mode, java-mode, idl-mode, pike-mode, awk-mode): Move
c-make-noise-macro-regexps and c-make-macro-with-semi-re (where appropriate)
and c-update-modeline into the :after-hook form.  Remove the explicit settings
of the syntax table, the abbreviation table and the local key map, since they
duplicate forms generated by define-derived-mode.  Remove the explicit
invocation of each mode's mode hook, since they duplicate ones generated by
define-derived-mode.

* lisp/progmodes/cc-vars.el: (c-string-list-p, c-string-or-string-list-p): New
functions.
(c-noise-macro-names, c-noise-macro-with-parens-names): give the
save-local-variable property c-string-list-p.
(c-macro-names-with-semicolon): give the save-local-variable property
c-string-or-string-list-p.

* doc/misc/cc-mode.texi: (Macros with ;, Noise Macros): Note that it's not
necessary to call the regexp generating functions after setting the pertinent
configuration values in a mode hook.
.dir-locals.el
doc/misc/cc-mode.texi
lisp/progmodes/cc-mode.el
lisp/progmodes/cc-vars.el