changeset 5540:d147979e10f4

(c-indent-region): Keep looping till reach endmark. Treat #-lines specially.
author Richard M. Stallman <rms@gnu.org>
date Sun, 09 Jan 1994 21:27:07 +0000
parents 73389b4a4a9d
children b203ef787d9c
files lisp/progmodes/c-mode.el
diffstat 1 files changed, 31 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/c-mode.el	Sun Jan 09 17:12:18 1994 +0000
+++ b/lisp/progmodes/c-mode.el	Sun Jan 09 21:27:07 1994 +0000
@@ -1220,41 +1220,43 @@
     (beginning-of-line)
     (let ((endmark (copy-marker end))
 	  (c-tab-always-indent t))
-      (while (and (bolp) (not (eolp)))
+      (while (and (bolp) (not (eobp)) (< (point) endmark))
 	;; Indent one line as with TAB.
 	(let ((shift-amt (c-indent-line))
 	      nextline sexpbeg sexpend)
-	  (save-excursion
-	    ;; Find beginning of following line.
+	  (if (save-excursion (beginning-of-line) (looking-at "[ \t]*#"))
+	      (forward-line 1)
 	    (save-excursion
-	      (forward-line 1) (setq nextline (point)))
-	    ;; Find first beginning-of-sexp for sexp extending past this line.
-	    (beginning-of-line)
-	    (while (< (point) nextline)
-	      (condition-case nil
+	      ;; Find beginning of following line.
+	      (save-excursion
+		(forward-line 1) (setq nextline (point)))
+	      ;; Find first beginning-of-sexp for sexp extending past this line.
+	      (beginning-of-line)
+	      (while (< (point) nextline)
+		(condition-case nil
+		    (progn
+		      (forward-sexp 1)
+		      (setq sexpend (point-marker)))
+		  (error (setq sexpend nil)
+			 (goto-char nextline)))
+		(skip-chars-forward " \t\n"))
+	      (if sexpend
 		  (progn
-		    (forward-sexp 1)
-		    (setq sexpend (point-marker)))
-		(error (setq sexpend nil)
-		       (goto-char nextline)))
-	      (skip-chars-forward " \t\n"))
-	    (if sexpend
+		    ;; Make sure the sexp we found really starts on the
+		    ;; current line and extends past it.
+		    (goto-char sexpend)
+		    (backward-sexp 1)
+		    (setq sexpbeg (point)))))
+	    ;; If that sexp ends within the region,
+	    ;; indent it all at once, fast.
+	    (if (and sexpend (> sexpend nextline) (<= sexpend endmark)
+		     (< sexpbeg nextline))
 		(progn
-		  ;; Make sure the sexp we found really starts on the
-		  ;; current line and extends past it.
-		  (goto-char sexpend)
-		  (backward-sexp 1)
-		  (setq sexpbeg (point)))))
-	  ;; If that sexp ends within the region,
-	  ;; indent it all at once, fast.
-	  (if (and sexpend (> sexpend nextline) (<= sexpend endmark)
-		   (< sexpbeg nextline))
-	      (progn
-		(indent-c-exp)
-		(goto-char sexpend)))
-	  ;; Move to following line and try again.
-	  (and sexpend (set-marker sexpend nil))
-	  (forward-line 1)))
+		  (indent-c-exp)
+		  (goto-char sexpend)))
+	    ;; Move to following line and try again.
+	    (and sexpend (set-marker sexpend nil))
+	    (forward-line 1))))
       (set-marker endmark nil))))
 
 (defun set-c-style (style &optional global)