c-forward-<>-arglist no longer directly applies face properties in Java Mode.

This allows the calling of c-restore-<>-properties from c-common-init without
the test suite giving spurious errors.

* lisp/progmodes/cc-engine.el (c-forward-<>-arglist): Remove the form that
sets face properties.
(c-forward-<>-arglist-recur): Reformulate the bit that handles types inside
template brackets using c-inside-<>-type-key.  Don't bind
c-record-type-identifiers or c-record-found-types around the recursive call,
allowing positions of found types to flow back to the caller.

* lisp/progmodes/cc-langs.el (c-inside-<>-type-kwds, c-inside-<>-type-key):
new lang consts/var.

* lisp/progmodes/cc-mode.el (c-common-init): Don't remove
c-restore-<>-properties from the list of functions called at mode
initialization.
This commit is contained in:
Alan Mackenzie 2016-04-25 17:08:26 +00:00
parent ff9de7b38a
commit db2ee1cd63
3 changed files with 33 additions and 25 deletions

View file

@ -2310,6 +2310,15 @@ assumed to be set if this isn't nil."
t (c-make-keywords-re t (c-lang-const c-<>-sexp-kwds)))
(c-lang-defvar c-opt-<>-sexp-key (c-lang-const c-opt-<>-sexp-key))
(c-lang-defconst c-inside-<>-type-kwds
"Keywords which, used inside a C++ style template arglist, introduce a type."
t nil
java '("extends" "super"))
(c-lang-defconst c-inside-<>-type-key
t (c-make-keywords-re t (c-lang-const c-inside-<>-type-kwds)))
(c-lang-defvar c-inside-<>-type-key (c-lang-const c-inside-<>-type-key))
(c-lang-defconst c-brace-id-list-kwds
"Keywords that may be followed by a brace block containing a comma
separated list of identifier definitions, i.e. like the list of