diff options
author | Alan Mackenzie <acm@muc.de> | 2016-08-27 15:45:17 +0000 |
---|---|---|
committer | Alan Mackenzie <acm@muc.de> | 2016-08-27 15:45:17 +0000 |
commit | 223429c09bb457f686693a6280339a4888bbad1c (patch) | |
tree | 5bd8bf3cee4fc9707ac525108788eac8946475e7 /lisp | |
parent | 1c7166a3ba399efbefc65feb8a6a41ef0dfa33a4 (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.el | 8 |
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))) |