1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-01 11:14:55 +00:00

(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>.
This commit is contained in:
Stefan Monnier 2001-10-24 16:07:06 +00:00
parent d9e3b8c640
commit 174acba338

View File

@ -1028,31 +1028,30 @@ brace."
(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) ?:)))