Mercurial > emacs
changeset 40261:f921ca937b6d
(c-beginning-of-member-init-list):
Better handling of C++ template args to avoid confusion with `<'
and `>' used as operators in member init expressions.
From Martin Stjernholm <bug-cc-mode@gnu.org>.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Wed, 24 Oct 2001 16:07:06 +0000 |
parents | e7be34625fd8 |
children | 64974d531aba |
files | lisp/progmodes/cc-engine.el |
diffstat | 1 files changed, 23 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/progmodes/cc-engine.el Wed Oct 24 16:05:41 2001 +0000 +++ b/lisp/progmodes/cc-engine.el Wed Oct 24 16:07:06 2001 +0000 @@ -1028,31 +1028,30 @@ (if (eq (char-after) ?,) (forward-char 1) (c-backward-syntactic-ws limit)) - (c-with-syntax-table (if (c-major-mode-is 'c++-mode) - c++-template-syntax-table - (syntax-table)) - (while (and (< limit (point)) - (eq (char-before) ?,)) - ;; this will catch member inits with multiple - ;; line arglists - (forward-char -1) - (c-backward-syntactic-ws) - (if (eq (char-before) ?\)) - (c-backward-sexp 2) + (while (and (< limit (point)) + (eq (char-before) ?,)) + ;; this will catch member inits with multiple + ;; line arglists + (forward-char -1) + (c-backward-syntactic-ws limit) + (if (eq (char-before) ?\)) (c-backward-sexp 1)) - ;; Skip over any template arg to the class. - (if (eq (char-after) ?<) - (c-backward-sexp 1)) - ;; Skip backwards over a fully::qualified::name. - (c-backward-syntactic-ws limit) - (while (and (eq (char-before) ?:) - (save-excursion - (forward-char -1) - (eq (char-before) ?:))) - (backward-char 2) - (c-backward-sexp 1)) - ;; now continue checking - (c-backward-syntactic-ws limit))) + (c-backward-syntactic-ws limit) + ;; Skip over any template arg to the class. + (if (eq (char-before) ?>) + (c-with-syntax-table c++-template-syntax-table + (c-backward-sexp 1))) + (c-backward-sexp 1) + (c-backward-syntactic-ws limit) + ;; Skip backwards over a fully::qualified::name. + (while (and (eq (char-before) ?:) + (save-excursion + (forward-char -1) + (eq (char-before) ?:))) + (backward-char 2) + (c-backward-sexp 1)) + ;; now continue checking + (c-backward-syntactic-ws limit)) (and (< limit (point)) (eq (char-before) ?:)))