Make ">>" act as double template ender in C++ Mode.

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.
This commit is contained in:
Alan Mackenzie 2014-08-24 20:38:11 +00:00
parent 849abe1dc1
commit 66bb9533fc
3 changed files with 41 additions and 11 deletions

View 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

View 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.

View 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