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) ?:)))