emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master d354fc3: Fix fontification of C++ declaration with


From: Alan Mackenzie
Subject: [Emacs-diffs] master d354fc3: Fix fontification of C++ declaration with type FOO::FOO.
Date: Sat, 22 Apr 2017 10:50:44 -0400 (EDT)

branch: master
commit d354fc38286cba05b3ba2fefb9d9cd6d30deac3d
Author: Alan Mackenzie <address@hidden>
Commit: Alan Mackenzie <address@hidden>

    Fix fontification of C++ declaration with type FOO::FOO.
    
    * lisp/progmodes/cc-engine.el (c-find-decl-spots): Initialize
    cfd-top-level properly.
    (c-forward-decl-or-cast-1): On finding FOO::FOO, check it is followed by "("
    before deciding it is a constructor.
    
    * lisp/progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare): Negate the
    result of the c-bs-at-toplevel-p call passed to c-font-lock-declarators
    (simple bug fix).
---
 lisp/progmodes/cc-engine.el | 8 ++++++--
 lisp/progmodes/cc-fonts.el  | 2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index e7a8962..4af7c35 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -5681,7 +5681,7 @@ comment at the start of cc-engine.el for more info."
        ;; Whether the last position returned from `c-find-decl-prefix-search'
        ;; is at the top-level (including directly in a class or namespace,
        ;; etc.).
-       cfd-top-level)
+       (cfd-top-level (c-bs-at-toplevel-p (point))))
 
     ;; Initialize by finding a syntactically relevant start position
     ;; before the point, and do the first `c-decl-prefix-or-start-re'
@@ -8379,7 +8379,11 @@ comment at the start of cc-engine.el for more info."
                   (c-simple-skip-symbol-backward))
                 (>= (point) type-start)
                 (equal (buffer-substring-no-properties (point) end-1)
-                       name))
+                       name)
+                (goto-char end-2)
+                (progn
+                  (c-forward-syntactic-ws)
+                  (eq (char-after) ?\()))
            ;; It is a (con|de)structor name.  In that case the
            ;; declaration is typeless so zap out any preceding
            ;; identifier(s) that we might have taken as types.
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index 923f077..adb1f1a 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -900,7 +900,7 @@ casts and declarations are fontified.  Used on level 2 and 
higher."
     (when (memq prop '(c-decl-id-start c-decl-type-start))
       (c-forward-syntactic-ws limit)
       (c-font-lock-declarators limit t (eq prop 'c-decl-type-start)
-                              (c-bs-at-toplevel-p (point)))))
+                              (not (c-bs-at-toplevel-p (point))))))
 
   (setq c-font-lock-context ;; (c-guess-font-lock-context)
        (save-excursion



reply via email to

[Prev in Thread] Current Thread [Next in Thread]