`c-make-emacs-variables-local' from cc-mode.el to cc-langs.el. Call it
from c-make-init-lang-vars-fun (cc-langs.el) instead of
c-init-language-vars-for (cc-mode.el).
(c-lang-setvar): new macro.
(c-make-init-lang-vars-fun): Use the initialization forms in
c-emacs-variable-inits in addition to those in c-lang-variable-inits.
(comment-start, comment-end, comment-start-skip): Change these from
c-lang-defvar's to c-lang-setvar's.
* progmodes/cc-mode.el (c-make-emacs-variables-local): new macro,
which calls make-local-variable on the elements of
c-emacs-variable-inits.
(c-init-language-vars-for): Call this new macro.
cc-defs.el, cc-engine.el, cc-fonts.el, cc-langs.el, cc-menus.el,
cc-mode.el, cc-styles.el, cc-subword.el, cc-vars.el: Add 2006 to the
copyright statement.
cc-awk.el: (c-awk-after-change): Protect the match data with
save-match-data. It was being corrupted when Font Lock was not enabled.
(ii): Fix a typo.
cc-cmds.el, cc-mode.el, cc-engine.el (c-update-modeline): Concatenate the
minor mode indicators directly onto mode-name, removing
c-submode-indicators. Sometimes, c-s-i got separated from the mode name
on the mode line.
cc-cmds.el, cc-mode.el: Rename c-hungry-backspace to
c-hungry-delete-backwards, at the request of RMS. Leave the old name as
an alias.
cc-cmds.el (c-electric-brace, c-electric-semi&comma, c-electric-colon):
Correct doc-strings: "/ln" -> "/la".
cc-cmds.el (c-electric-brace): Fix clean-up brace-else-brace (error due
to mbeg, mend being undefined).
cc-defs.el (c-version): Update to 5.31.3.
cc-defs.el: [Supersedes patch V1.38]: (top level): Check for a buggy
font-lock-compile-keywords ONLY in XEmacs. GNU Emacs 22 now has a check
which would throw an error here.
cc-engine.el (c-beginning-of-statement-1): Clarify doc-string and
comments. Distinguish real labels ("case 1:" or "foo:") from non-labels
("public:").
cc-engine.el (c-after-change-check-<>-operators): Remove save-match-data,
reversing change for V1.45. save-match-data is now in c-after-change.
cc-engine.el (c-forward-objc-directive): Replace c-forward-token-2 with
crude coding; c-f-t-2 doesn't move over a token at EOB. Objc Mode was
hanging after typing, e.g., "@implementation".
cc-langs.el (c-filter-ops): Made it available at runtime too to work when
`c-make-init-lang-vars-fun' needs to evaluate from source.
cc-langs.el (c-make-init-lang-vars-fun): Improved the error message when
there's an evaluation error to show whether it's loaded from source or
not.
(c-mode-menu): Add menu items for Electric Mode and Subword Mode.
cc-mode.el (c-after-change): Protect the match data with save-match-data.
It was getting corrupted by c-after-change-check-<>-operators.
cc-mode.el: File Local variables: Solve the problem where both `mode' and
c-file-offsets are specified: `mode' will overwrite c-f-o's settings:
(c-remove-any-local-eval-or-mode-variables): new function.
(c-postprocess-file-styles): call the above new function, within
c-tentative-buffer-change, to splat `mode' and `eval' before the second
hack-local-variables.
CC Mode update to 5.30.10:
* cc-fonts.el (c-font-lock-declarators): Fixed bug where the point
could go past the limit in decoration level 2, thereby causing
errors during interactive fontification.
* cc-mode.el (c-make-inherited-keymap): Fixed cc-bytecomp bug when
the file is evaluated interactively.
* cc-engine.el (c-guess-basic-syntax): Handle operator
declarations somewhat better in C++.
* cc-styles.el, cc-mode.el (c-run-mode-hooks): New helper macro to
make use of run-mode-hooks' which has been added in Emacs 21.1.
(c-mode, c++-mode, objc-mode, java-mode, idl-mode, pike-mode,
awk-mode): Use it.
(make-local-hook): Suppress warning about obsoleteness.
* cc-engine.el, cc-align.el, cc-cmds.el
(c-append-backslashes-forward, c-delete-backslashes-forward,
c-find-decl-spots, c-semi&comma-no-newlines-before-nonblanks):
Compensate for return value from forward-line' when it has moved
but not to a different line due to eob.
* cc-engine.el (c-guess-basic-syntax): Fixed anchoring in
objc-method-intro' and objc-method-args-cont'.
2005-05-23 Alan Mackenzie <bug-cc-mode@gnu.org>
CC Mode update to 5.30.10:
* cc-mode.el, cc-engine.el, cc-align.el: Change the FSF's address
in the copyright statement. Incidentally, change "along with GNU
Emacs" to "along with this program" where it occurs.
* cc-mode.el: Add a fourth parameter t' to the awk-mode autoload,
so that it is interactive, hence can be found by M-x awk-mode
whilst cc-mode is yet to be loaded. Reported by Glenn Morris
<gmorris+emacs@ast.cam.ac.uk>.
* cc-awk.el: Add character classes (e.g. "[:alpha:]") into AWK
Mode's regexps.
2005-05-23 Kevin Ryde <user42@zip.com.au>:
* cc-align.el (c-lineup-argcont): Ignore conses for {} pairs from
c-parse-state, to avoid a lisp error (on bad code).
operators.
(c-assignment-operators): New language constant that only contains the
assignment operators.
(c-assignment-op-regexp): New language variable used by c-lineup-math'.
c-common-init to get paragraph-start correct.
(c-common-init): Use c-append-paragraph-start to
initialize paragraph-start to make it correct both with and
without the javadoc special case.
(c-Pike-inexpr-class-key): New
constant, since "class" can introduce an in-expression class
in Pike nowadays.
(c-Java-javadoc-paragraph-start): Brought
up-to-date with javadoc 1.2.
(c-common-init): Handling of obsolete variables
moved to c-initialize-cc-mode. More compatible style override
when using global style variables.
make the variables local to the buffer (via make-local-variable).
(c-java-method-key): Variable deleted.
(c-C-extra-toplevel-key)
(c-C++-extra-toplevel-key, c-extra-toplevel-key): New variables
which parameterize the search for additional top-level enclosing
constructs.
(c-mode-base-map): c-mark-function moved back to M-C-h.
Move `/' as an electric character
from c++-mode-map to c-mode-base-map for all languages.
(c-common-init): Set comment-multi-line and
comment-line-break-function here for all modes.
Make comment-line-break-function buffer local iff it's boundp.
(c-C-comment-start-regexp): Obsolete.
(c-comment-start-regexp): Initialize from c-C++-comment-start-regexp.
(c-populate-syntax-table, c-setup-dual-comments): Merge both functions
into c-populate-syntax-table. With the new 9X draft C standard, both
line and block oriented comments are supported in all modes, so always
set up the syntax tables to support both comment styles.
(c-enable-//-in-c-mode): Obsolete.
(c++-mode-syntax-table, java-mode-syntax-table)
(objc-mode-syntax-table, idl-mode-syntax-table): Added autoload
cookies. c-mode-syntax-table already has one. Use the new syntax
table initialization idioms.
First character must be a letter or underscore.
(c-styles-are-initialized): Variable deleted.
(c-common-init): Don't initialize styles here.
(idl-mode-abbrev-table): New variable.
(idl-mode-map, idl-mode-syntax-table): New variables.
(c-idl-menu): New menu.
(c-symbol-key): First character must be a letter or underscore.
(c-make-inherited-keymap): Change to a defun.
(c-mode-menu): Added uncomment region and slight rearrangement of items.