]> code.delx.au - gnu-emacs/commitdiff
Make ">>" act as double template ender in C++ Mode.
authorAlan Mackenzie <acm@muc.de>
Sun, 24 Aug 2014 20:38:11 +0000 (20:38 +0000)
committerAlan Mackenzie <acm@muc.de>
Sun, 24 Aug 2014 20:38:11 +0000 (20:38 +0000)
cc-langs.el (c->-op-cont-tokens): New lang-const split off from
c->-op-cont-re.
(c->-op-cont-tokens): Change to use the above.
(c->-op-without->-cont-regexp): New lang-const.

cc-engine.el (c-forward-<>-arglist-recur): Use
c->-op-without->-cont-regexp in place of c->-op-cont-tokens.

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

index 920eea268f4afb827a0e9fb81a53d7041a134ead..5b1c0b1b38659dca05de9457b8e3abf4bfa4684d 100644 (file)
@@ -1,3 +1,14 @@
+2014-08-24  Alan Mackenzie  <acm@muc.de>
+
+       Make ">>" act as double template ender in C++ Mode.
+        * progmodes/cc-langs.el (c->-op-cont-tokens): New lang-const split
+       off from c->-op-cont-re.
+        (c->-op-cont-tokens): Change to use the above.
+        (c->-op-without->-cont-regexp): New lang-const.
+        * progmodes/cc-engine.el (c-forward-<>-arglist-recur): Use
+       c->-op-without->-cont-regexp in place of c->-op-cont-tokens.
+
+
 2014-08-23  Alan Mackenzie  <acm@muc.de>
 
        * progmodes/cc-fonts.el (c-font-lock-declarators): Fix infinite
index 626e131ed2221679a68283918ba357a1521781d4..8283bb38eae91a6208a93eeaafd284148208482e 100644 (file)
@@ -5944,7 +5944,7 @@ comment at the start of cc-engine.el for more info."
                  ;; Either an operator starting with '>' or the end of
                  ;; the angle bracket arglist.
 
-                 (if (looking-at c->-op-cont-regexp)
+                 (if (looking-at c->-op-without->-cont-regexp)
                      (progn
                        (goto-char (match-end 0))
                        t)              ; Continue the loop.
index 42b6f5964c2ff5437c02601e04532b62654f24b9..2bf660a32eb9bd041651de8a1814326e22defcb2 100644 (file)
@@ -1217,22 +1217,41 @@ operators."
 
 (c-lang-defvar c-<-op-cont-regexp (c-lang-const c-<-op-cont-regexp))
 
+(c-lang-defconst c->-op-cont-tokens
+  ;; A list of second and subsequent characters of all multicharacter tokens
+  ;; that begin with ">".
+  t (c-filter-ops (c-lang-const c-all-op-syntax-tokens)
+                 t
+                 "\\`>."
+                 (lambda (op) (substring op 1)))
+  java (c-filter-ops (c-lang-const c-all-op-syntax-tokens)
+                    t
+                    "\\`>[^>]\\|\\`>>[^>]"
+                    (lambda (op) (substring op 1))))
+
 (c-lang-defconst c->-op-cont-regexp
   ;; Regexp matching the second and subsequent characters of all
   ;; multicharacter tokens that begin with ">".
-  t (c-make-keywords-re nil
-      (c-filter-ops (c-lang-const c-all-op-syntax-tokens)
-                   t
-                   "\\`>."
-                   (lambda (op) (substring op 1))))
-  java (c-make-keywords-re nil
-        (c-filter-ops (c-lang-const c-all-op-syntax-tokens)
-                      t
-                      "\\`>[^>]\\|\\`>>[^>]"
-                      (lambda (op) (substring op 1)))))
+  t (c-make-keywords-re nil (c-lang-const c->-op-cont-tokens)))
 
 (c-lang-defvar c->-op-cont-regexp (c-lang-const c->-op-cont-regexp))
 
+(c-lang-defconst c->-op-without->-cont-regexp
+  ;; Regexp matching the second and subsequent characters of all
+  ;; multicharacter tokens that begin with ">" except for those beginning with
+  ;; ">>".
+  t (c-make-keywords-re nil
+      (set-difference
+       (c-lang-const c->-op-cont-tokens)
+       (c-filter-ops (c-lang-const c-all-op-syntax-tokens)
+                    t
+                    "\\`>>"
+                    (lambda (op) (substring op 1)))
+       :test 'string-equal)))
+
+(c-lang-defvar c->-op-without->-cont-regexp
+  (c-lang-const c->-op-without->-cont-regexp))
+
 (c-lang-defconst c-stmt-delim-chars
   ;; The characters that should be considered to bound statements.  To
   ;; optimize `c-crosses-statement-barrier-p' somewhat, it's assumed to