]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix fontification of first declaration within a C++ lambda form.
authorAlan Mackenzie <acm@muc.de>
Thu, 14 Dec 2017 21:04:39 +0000 (21:04 +0000)
committerAlan Mackenzie <acm@muc.de>
Thu, 14 Dec 2017 21:04:39 +0000 (21:04 +0000)
* lisp/progmodes/cc-engine.el (c-looking-at-or-maybe-in-bracelist): Cease
spuriously recognizing the braces of a lambda form as a brace list when there
is an "=" preceding the introductory brackets.

lisp/progmodes/cc-engine.el

index 881209c286e5d6012818cefc408231d36513ac41..12ec8f74fea4e82d7a16bf4773237474bbe1e9e0 100644 (file)
@@ -10440,7 +10440,7 @@ comment at the start of cc-engine.el for more info."
                c-decl-block-key))
          (braceassignp 'dontknow)
          inexpr-brace-list bufpos macro-start res pos after-type-id-pos
-         in-paren)
+         in-paren parens-before-brace)
 
       (setq res (c-backward-token-2 1 t lim))
       ;; Checks to do only on the first sexp before the brace.
@@ -10458,6 +10458,9 @@ comment at the start of cc-engine.el for more info."
                ((and (looking-at c-symbol-start)
                      (not (looking-at c-keywords-regexp)))
                 (setq after-type-id-pos (point)))
+               ((eq (char-after) ?\()
+                (setq parens-before-brace t)
+                nil)
                (t nil))
               (save-excursion
                 (cond
@@ -10506,6 +10509,14 @@ comment at the start of cc-engine.el for more info."
        ;; Single identifier between '(' and '{'.  We have a bracelist.
        (cons after-type-id-pos 'in-paren))
 
+       ;; Are we at the parens of a C++ lambda expression?
+       ((and parens-before-brace
+            (save-excursion
+              (and
+               (zerop (c-backward-token-2 1 t lim))
+               (c-looking-at-c++-lambda-capture-list))))
+       nil)                         ; a lambda expression isn't a brace list.
+
        (t
        (goto-char pos)
        ;; Checks to do on all sexps before the brace, up to the