]> code.delx.au - gnu-emacs/commitdiff
(lisp-indent-region): Set endmark before indenting first line.
authorRichard M. Stallman <rms@gnu.org>
Mon, 30 Jan 1995 02:16:26 +0000 (02:16 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 30 Jan 1995 02:16:26 +0000 (02:16 +0000)
(indent-sexp): Fixes for ENDPOS != nil case--use nil
as starting-point, and don't insist on a complete sexp.

lisp/emacs-lisp/lisp-mode.el

index eabe393a8204afb7a9b1aa74d192679db9731f43..d6c299942bde919f3c1bff5514470b513d6e9113 100644 (file)
@@ -523,11 +523,17 @@ ENDPOS is encountered."
   (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 @@ ENDPOS is encountered."
                                          (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 @@ ENDPOS is encountered."
 ;; 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))))
 \f