[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/progmodes/compile.el,v
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/progmodes/compile.el,v |
Date: |
Fri, 13 Jun 2008 16:22:17 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Stefan Monnier <monnier> 08/06/13 16:22:16
Index: progmodes/compile.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/progmodes/compile.el,v
retrieving revision 1.475
retrieving revision 1.476
diff -u -b -r1.475 -r1.476
--- progmodes/compile.el 11 Jun 2008 02:47:57 -0000 1.475
+++ progmodes/compile.el 13 Jun 2008 16:22:16 -0000 1.476
@@ -1159,7 +1159,6 @@
(error nil))
(error "Cannot have two processes in `%s' at once"
(buffer-name)))))
- (buffer-disable-undo (current-buffer))
;; first transfer directory from where M-x compile was called
(setq default-directory thisdir)
;; Make compilation buffer read-only. The filter can still write it.
@@ -1177,7 +1176,9 @@
(erase-buffer)
;; Select the desired mode.
(if (not (eq mode t))
- (funcall mode)
+ (progn
+ (buffer-disable-undo)
+ (funcall mode))
(setq buffer-read-only nil)
(with-no-warnings (comint-mode))
(compilation-shell-minor-mode))
@@ -1262,7 +1263,10 @@
(setq mode-line-process
(list (propertize ":%s" 'face 'compilation-warning)))
(set-process-sentinel proc 'compilation-sentinel)
- (set-process-filter proc 'compilation-filter)
+ (unless (eq mode t)
+ ;; Keep the comint filter, since it's needed for proper handling
+ ;; of the prompts.
+ (set-process-filter proc 'compilation-filter))
;; Use (point-max) here so that output comes in
;; after the initial text,
;; regardless of where the user sees point.
@@ -1666,17 +1670,21 @@
(defun compilation-filter (proc string)
"Process filter for compilation buffers.
Just inserts the text, and runs `compilation-filter-hook'."
- (if (buffer-live-p (process-buffer proc))
+ (when (buffer-live-p (process-buffer proc))
(with-current-buffer (process-buffer proc)
- (let ((inhibit-read-only t))
- (save-excursion
+ (let ((inhibit-read-only t)
+ ;; `save-excursion' doesn't use the right insertion-type for us.
+ (pos (copy-marker (point) t)))
+ (unwind-protect
+ (progn
(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
;; now use window-point-insertion-type instead.
(insert string)
(set-marker (process-mark proc) (point))
- (run-hooks 'compilation-filter-hook))))))
+ (run-hooks 'compilation-filter-hook))
+ (goto-char pos))))))
;;; test if a buffer is a compilation buffer, assuming we're in the buffer
(defsubst compilation-buffer-internal-p ()