# HG changeset patch # User Richard M. Stallman # Date 758150827 0 # Node ID d147979e10f4ff79b0d9d04adc746142a5d77be4 # Parent 73389b4a4a9de595070329eab6dd03e98d3a5abc (c-indent-region): Keep looping till reach endmark. Treat #-lines specially. diff -r 73389b4a4a9d -r d147979e10f4 lisp/progmodes/c-mode.el --- 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)