Mercurial > emacs
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)