]> git.eshelyaron.com Git - emacs.git/commitdiff
Implement "final" before C++ class inheritance lists.
authorAlan Mackenzie <acm@muc.de>
Sat, 13 Apr 2019 13:29:58 +0000 (13:29 +0000)
committerAlan Mackenzie <acm@muc.de>
Sat, 13 Apr 2019 13:29:58 +0000 (13:29 +0000)
* lisp/progmodes/cc-langs.el (c-class-id-suffix-ws-ids-kwds)
(c-class-id-suffix-ws-ids-key): New lang const/var.

* lisp/progmodes/cc-engine.el (c-guess-basic-syntax CASE 5D.4): Check for and
skip over any matches for c-class-id-suffix-ws-ids-key (i.e. "final") before
":".

lisp/progmodes/cc-engine.el
lisp/progmodes/cc-langs.el

index fc8c377f2779f92b378d096fca1bab7c777c10c2..f0b44d2183d20af45e4817a4cebae83bde2b0c2a 100644 (file)
@@ -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)))
index 2dff5cf83c814a8e02a91b12e9f0ee8999d0922e..b5c3ff3335250aaf89a02806d279930bb5aed490 100644 (file)
@@ -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.