# HG changeset patch # User Richard M. Stallman # Date 791432186 0 # Node ID aadef46f00f7ae703eadedeab42c129a12e247d3 # Parent 7ae93c2ee7a2e7d59ac986b3041f999c9dc06d65 (lisp-indent-region): Set endmark before indenting first line. (indent-sexp): Fixes for ENDPOS != nil case--use nil as starting-point, and don't insist on a complete sexp. diff -r 7ae93c2ee7a2 -r aadef46f00f7 lisp/emacs-lisp/lisp-mode.el --- a/lisp/emacs-lisp/lisp-mode.el Mon Jan 30 02:15:37 1995 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Mon Jan 30 02:16:26 1995 +0000 @@ -523,11 +523,17 @@ (interactive) (let ((indent-stack (list nil)) (next-depth 0) - (starting-point (point)) + ;; If ENDPOS is non-nil, use nil as STARTING-POINT + ;; so that calculate-lisp-indent will find the beginning of + ;; the defun we are in. + ;; If ENDPOS is nil, it is safe not to scan before point + ;; since every line we indent is more deeply nested than point is. + (starting-point (if endpos nil (point))) (last-point (point)) last-depth bol outer-loop-done inner-loop-done state this-indent) - ;; Get error now if we don't have a complete sexp after point. - (save-excursion (forward-sexp 1)) + (or endpos + ;; Get error now if we don't have a complete sexp after point. + (save-excursion (forward-sexp 1))) (save-excursion (setq outer-loop-done nil) (while (if endpos (< (point) endpos) @@ -568,7 +574,7 @@ (make-list (- next-depth) nil)) last-depth (- last-depth next-depth) next-depth 0))) - (or outer-loop-done + (or outer-loop-done endpos (setq outer-loop-done (<= next-depth 0))) (if outer-loop-done (forward-line 1) @@ -608,10 +614,10 @@ ;; Indent every line whose first char is between START and END inclusive. (defun lisp-indent-region (start end) (save-excursion - (goto-char start) - (and (bolp) (not (eolp)) - (lisp-indent-line)) (let ((endmark (copy-marker end))) + (goto-char start) + (and (bolp) (not (eolp)) + (lisp-indent-line)) (indent-sexp endmark) (set-marker endmark nil))))