diff options
-rw-r--r-- | lisp/progmodes/cc-engine.el | 7 | ||||
-rw-r--r-- | lisp/progmodes/cc-langs.el | 13 |
2 files changed, 20 insertions, 0 deletions
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index fc8c377f277..f0b44d2183d 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -12734,6 +12734,13 @@ comment at the start of cc-engine.el for more info." (if (eq (char-after) ?<) (zerop (c-forward-token-2 1 t indent-point)) t) + (progn + (while + (and + (< (point) indent-point) + (looking-at c-class-id-suffix-ws-ids-key) + (zerop (c-forward-token-2 1 nil indent-point)))) + t) (eq (char-after) ?:)))) (goto-char placeholder) (c-add-syntax 'inher-cont (c-point 'boi))) diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index 2dff5cf83c8..b5c3ff33352 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -2049,6 +2049,19 @@ effect in the declaration, but are syntactically like whitespace." (c-lang-defvar c-type-decl-suffix-ws-ids-key (c-lang-const c-type-decl-suffix-ws-ids-key)) +(c-lang-defconst c-class-id-suffix-ws-ids-kwds + "\"Identifiers\" that when immediately following the identifier +of a class declaration have semantic effect in the declaration, +but are syntactially like whitespace." + t nil + c++ '("final")) + +(c-lang-defconst c-class-id-suffix-ws-ids-key + ;; An adorned regexp matching `c-class-id-suffix-ws-ids-kwds'. + t (c-make-keywords-re t (c-lang-const c-class-id-suffix-ws-ids-kwds))) +(c-lang-defvar c-class-id-suffix-ws-ids-key + (c-lang-const c-class-id-suffix-ws-ids-key)) + (c-lang-defconst c-class-decl-kwds "Keywords introducing declarations where the following block (if any) contains another declaration level that should be considered a class. |