]> git.eshelyaron.com Git - emacs.git/commitdiff
* progmodes/compile.el (compilation-filter): If inserting at end
authorRichard M. Stallman <rms@gnu.org>
Mon, 18 May 2009 16:30:59 +0000 (16:30 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 18 May 2009 16:30:59 +0000 (16:30 +0000)
of accessible part of buffer, keep end of output visible.

lisp/ChangeLog
lisp/progmodes/compile.el

index b1241123942fd25f82f4efead98b543f77db835f..cfc11bd2e40c5fe1fcf0727bf6bfdcd1c8adabda 100644 (file)
@@ -1,5 +1,8 @@
 2009-05-18  Richard M Stallman  <rms@gnu.org>
 
+       * progmodes/compile.el (compilation-filter): If inserting at end
+       of accessible part of buffer, keep end of output visible.
+
        * mail/rmail.el (rmail-expunge-confirmed): Return nil if nothing to do.
        Don't call rmail-modify-format here.
        (rmail-expunge): Call it here after expunge is confirmed.
index 2b3b954a4121d5f67892161af0e4ab504a5861f5..283a37acd8c675933b65f39fba88cce1ccf248b4 100644 (file)
@@ -1739,9 +1739,15 @@ and runs `compilation-filter-hook'."
     (with-current-buffer (process-buffer proc)
       (let ((inhibit-read-only t)
             ;; `save-excursion' doesn't use the right insertion-type for us.
-            (pos (copy-marker (point) t)))
+            (pos (copy-marker (point) t))
+           (min (point-min-marker))
+           (max (point-max-marker)))
         (unwind-protect
             (progn
+             ;; If we are inserting at the end of the accessible part
+             ;; of the buffer, keep the inserted text visible.
+             (set-marker-insertion-type max t)
+             (widen)
               (goto-char (process-mark proc))
               ;; We used to use `insert-before-markers', so that windows with
               ;; point at `process-mark' scroll along with the output, but we
@@ -1751,7 +1757,10 @@ and runs `compilation-filter-hook'."
                 (comint-carriage-motion (process-mark proc) (point)))
               (set-marker (process-mark proc) (point))
               (run-hooks 'compilation-filter-hook))
-          (goto-char pos))))))
+         (goto-char pos)
+          (narrow-to-region min max)
+         (set-marker min nil)
+         (set-marker max nil))))))
 
 ;;; test if a buffer is a compilation buffer, assuming we're in the buffer
 (defsubst compilation-buffer-internal-p ()