changeset 4286:d719788a0aaa

(indent-c-exp): When previous line ends in comma, use calculate-c-indent. Fix the "inner loop" to properly detect a line that ends outside of comments and strings.
author Richard M. Stallman <rms@gnu.org>
date Mon, 26 Jul 1993 07:10:13 +0000
parents 37dded875497
children 20486b99584f
files lisp/progmodes/c-mode.el
diffstat 1 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/c-mode.el	Mon Jul 26 06:13:03 1993 +0000
+++ b/lisp/progmodes/c-mode.el	Mon Jul 26 07:10:13 1993 +0000
@@ -989,7 +989,7 @@
 	 restart outer-loop-done inner-loop-done state ostate
 	 this-indent last-sexp
 	 at-else at-brace at-while
-	 last-depth
+	 last-depth this-point
 	 (next-depth 0))
     ;; If the braces don't match, get an error right away.
     (save-excursion
@@ -1033,9 +1033,12 @@
 	  (if (and (car (cdr (cdr state)))
 		   (>= (car (cdr (cdr state))) 0))
 	      (setq last-sexp (car (cdr (cdr state)))))
-	  (if (or (nth 4 ostate))
+	  ;; If this line started within a comment, indent it as such.
+	  (if (or (nth 4 ostate) (nth 7 ostate))
 	      (c-indent-line))
-	  (if (or (nth 3 state))
+	  ;; If it ends outside of comments or strings, exit the inner loop.
+	  ;; Otherwise move on to next line.
+	  (if (or (nth 3 state) (nth 4 state) (nth 7 state))
 	      (forward-line 1)
 	    (setq inner-loop-done t)))
 	(and endpos
@@ -1085,6 +1088,7 @@
 		  ;; Is it a new statement?  Is it an else?
 		  ;; Find last non-comment character before this line
 		  (save-excursion
+		    (setq this-point (point))
 		    (setq at-else (looking-at "else\\W"))
 		    (setq at-brace (= (following-char) ?{))
 		    (setq at-while (looking-at "while\\b"))
@@ -1105,6 +1109,9 @@
 						  (current-indentation))))
 			    ((and at-while (c-backward-to-start-of-do opoint))
 			     (setq this-indent (current-indentation)))
+			    ((eq (preceding-char) ?\,)
+			     (goto-char this-point)
+			     (setq this-indent (calculate-c-indent)))
 			    (t (setq this-indent (car indent-stack)))))))
 	      ;; Just started a new nesting level.
 	      ;; Compute the standard indent for this level.