summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2016-08-27 15:45:17 +0000
committerAlan Mackenzie <acm@muc.de>2016-08-27 15:45:17 +0000
commit223429c09bb457f686693a6280339a4888bbad1c (patch)
tree5bd8bf3cee4fc9707ac525108788eac8946475e7 /lisp
parent1c7166a3ba399efbefc65feb8a6a41ef0dfa33a4 (diff)
Handle template delimiters in C++ member init constructs.
* lisp/progmodes/cc-engine.el (c-back-over-list-of-member-inits): Add handling for "<....>"s.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/progmodes/cc-engine.el8
1 files changed, 7 insertions, 1 deletions
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 940d7a4cc3..ecee57e401 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -7410,7 +7410,8 @@ comment at the start of cc-engine.el for more info."
(defmacro c-back-over-list-of-member-inits ()
;; Go back over a list of elements, each looking like:
;; <symbol> (<expression>) ,
- ;; or <symbol> {<expression>} ,
+ ;; or <symbol> {<expression>} , (with possibly a <....> expressions
+ ;; following the <symbol>).
;; when we are putatively immediately after a comma. Stop when we don't see
;; a comma. If either of <symbol> or bracketed <expression> is missing,
;; throw nil to 'level. If the terminating } or ) is unmatched, throw nil
@@ -7423,6 +7424,11 @@ comment at the start of cc-engine.el for more info."
(when (not (c-go-list-backward))
(throw 'done nil))
(c-backward-syntactic-ws)
+ (while (eq (char-before) ?>)
+ (when (not (c-backward-<>-arglist nil))
+ (throw 'done nil))
+ (c-backward-syntactic-ws))
+ (c-backward-syntactic-ws)
(when (not (c-back-over-compound-identifier))
(throw 'level nil))
(c-backward-syntactic-ws)))