changeset 10594:aadef46f00f7

(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.
author Richard M. Stallman <rms@gnu.org>
date Mon, 30 Jan 1995 02:16:26 +0000
parents 7ae93c2ee7a2
children 06fa5b312280
files lisp/emacs-lisp/lisp-mode.el
diffstat 1 files changed, 13 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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))))