]> git.eshelyaron.com Git - emacs.git/commitdiff
progmodes/cc-engine.el (c-guess-continued-construct): Correct the
authorAlan Mackenzie <acm@muc.de>
Thu, 30 Jun 2011 15:12:59 +0000 (15:12 +0000)
committerAlan Mackenzie <acm@muc.de>
Thu, 30 Jun 2011 15:12:59 +0000 (15:12 +0000)
handling of template-args-cont, particularly for when font lock is
disabled.  Name this case as "CASE G".

lisp/ChangeLog
lisp/progmodes/cc-engine.el

index 5c063b9603b2cc705c9c8ea09141405e233e4af2..c82e4325ffee39c70958514e581f8da2ed2f1173 100644 (file)
@@ -1,3 +1,9 @@
+2011-06-30  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-engine.el (c-guess-continued-construct): Correct
+       the handling of template-args-cont, particularly for when font
+       lock is disabled.  Name this case as "CASE G".
+
 2011-06-30  Ken Manheimer  <ken.manheimer@gmail.com>
 
        * allout.el (allout-yank-processing): Fix injection of extra space
index 0eec54fab6ffee47ba302354b86b7c6ab3e5b986..38f66b4504ea8e38fffb8a80c8d71d9a7a0c5bd0 100644 (file)
@@ -8712,6 +8712,35 @@ comment at the start of cc-engine.el for more info."
        (c-beginning-of-statement-1 containing-sexp)
        (c-add-syntax 'annotation-var-cont (point)))
 
+     ;; CASE G: a template list continuation?
+     ;; Mostly a duplication of case 5D.3 to fix templates-19:
+     ((and (c-major-mode-is 'c++-mode)
+          (save-excursion
+            (goto-char indent-point)
+            (c-with-syntax-table c++-template-syntax-table
+              (setq placeholder (c-up-list-backward)))
+            (and placeholder
+                 (eq (char-after placeholder) ?<)
+                 (/= (char-before placeholder) ?<)
+                 (progn
+                   (goto-char (1+ placeholder))
+                   (not (looking-at c-<-op-cont-regexp))))))
+      (c-with-syntax-table c++-template-syntax-table
+       (goto-char placeholder)
+       (c-beginning-of-statement-1 containing-sexp t)
+       (if (save-excursion
+             (c-backward-syntactic-ws containing-sexp)
+             (eq (char-before) ?<))
+           ;; In a nested template arglist.
+           (progn
+             (goto-char placeholder)
+             (c-syntactic-skip-backward "^,;" containing-sexp t)
+             (c-forward-syntactic-ws))
+         (back-to-indentation)))
+      ;; FIXME: Should use c-add-stmt-syntax, but it's not yet
+      ;; template aware.
+      (c-add-syntax 'template-args-cont (point) placeholder))
+     
      ;; CASE D: continued statement.
      (t
       (c-beginning-of-statement-1 containing-sexp)