emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 515ce25 7/7: Don't confuse "::" with ":" when tryin


From: Paul Eggert
Subject: [Emacs-diffs] master 515ce25 7/7: Don't confuse "::" with ":" when trying to parse member initializers.
Date: Tue, 22 Mar 2016 00:06:00 +0000

branch: master
commit 515ce25ffdfef33a603342fa7fbc793925f54230
Author: Alan Mackenzie <address@hidden>
Commit: Paul Eggert <address@hidden>

    Don't confuse "::" with ":" when trying to parse member initializers.
    
    * lisp/progmodes/cc-engine.el (c-back-over-member-initializers): Check
    more robustly for ":" token when searching backwards for it.
    
    * lisp/progmodes/cc-langs (c-:$-multichar-token-regexp): New language
    variable.
    
    [This reapplies commit 9e5452f7166e3634f2d8e943815ed722e1672714,
    which was inadvertently lost by merge commit
    7823745acbe9b87eea2db4ef434e379fc903ec35.]
---
 lisp/progmodes/cc-engine.el |    6 ++++++
 lisp/progmodes/cc-langs.el  |    8 ++++++++
 2 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 66b5369..06e11b2 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -6798,6 +6798,9 @@ comment at the start of cc-engine.el for more info."
                      (c-backward-syntactic-ws))
                    (c-back-over-list-of-member-inits)
                    (and (eq (char-before) ?:)
+                        (save-excursion
+                          (c-backward-token-2)
+                          (not (looking-at c-:$-multichar-token-regexp)))
                         (c-just-after-func-arglist-p))))
 
            (while (and (not (and level-plausible
@@ -6812,6 +6815,9 @@ comment at the start of cc-engine.el for more info."
                      (c-backward-syntactic-ws)
                      (c-back-over-list-of-member-inits)
                      (and (eq (char-before) ?:)
+                          (save-excursion
+                            (c-backward-token-2)
+                            (not (looking-at c-:$-multichar-token-regexp)))
                           (c-just-after-func-arglist-p)))))
 
            (and at-top-level level-plausible)))
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index d212482..7a8213b 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -1230,6 +1230,14 @@ operators."
 (c-lang-defvar c-assignment-op-regexp
   (c-lang-const c-assignment-op-regexp))
 
+(c-lang-defconst c-:$-multichar-token-regexp
+  ;; Regexp matching all tokens ending in ":" which are longer than one char.
+  ;; Currently (2016-01-07) only used in C++ Mode.
+  t (c-make-keywords-re nil
+      (c-filter-ops (c-lang-const c-operators) t ".+:$")))
+(c-lang-defvar c-:$-multichar-token-regexp
+  (c-lang-const c-:$-multichar-token-regexp))
+
 (c-lang-defconst c-<>-multichar-token-regexp
   ;; Regexp matching all tokens containing "<" or ">" which are longer
   ;; than one char.



reply via email to

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