# HG changeset patch # User Stefan Monnier # Date 1003939626 0 # Node ID f921ca937b6d5eb9825d6c7b2649d315526d74bc # Parent e7be34625fd852d004dfa820f95908bf9f10d178 (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 . diff -r e7be34625fd8 -r f921ca937b6d lisp/progmodes/cc-engine.el --- 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) ?:)))