summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2009-02-15 19:54:14 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2009-02-15 19:54:14 +0100
commit9df5971ee7aa9c5562a96c4e0af3be944b9fd78b (patch)
tree9c666008df9c19117794f559d18901d4906e50a1
parent8d137f9e77811f16d536f73cc1c059a77782f7de (diff)
downloadgeiser-9df5971ee7aa9c5562a96c4e0af3be944b9fd78b.tar.gz
geiser-9df5971ee7aa9c5562a96c4e0af3be944b9fd78b.tar.bz2
Avoing REPL modeline message flickering on redirection.
-rw-r--r--elisp/geiser-connection.el16
-rw-r--r--elisp/geiser-repl.el7
2 files changed, 15 insertions, 8 deletions
diff --git a/elisp/geiser-connection.el b/elisp/geiser-connection.el
index 7a73adc..b78982c 100644
--- a/elisp/geiser-connection.el
+++ b/elisp/geiser-connection.el
@@ -135,20 +135,18 @@
(defun geiser-con--cleanup-connection (c)
(geiser-con--connection-cancel-timer c))
-(defun geiser-con--setup-connection (buffer)
+(defun geiser-con--setup-connection (buffer prompt-regexp)
(with-current-buffer buffer
(when geiser-con--connection
(geiser-con--cleanup-connection geiser-con--connection))
(setq geiser-con--connection (geiser-con--make-connection buffer))
- (geiser-con--setup-comint)
+ (geiser-con--setup-comint prompt-regexp)
(geiser-con--connection-start-timer geiser-con--connection)
(message "Geiser REPL up and running!")))
-(defconst geiser-con--prompt-regex "^[^() \n]+@([^)]*?)> ")
-
-(defun geiser-con--setup-comint ()
+(defun geiser-con--setup-comint (prompt-regexp)
(set (make-local-variable 'comint-redirect-insert-matching-regexp) nil)
- (set (make-local-variable 'comint-redirect-finished-regexp) geiser-con--prompt-regex)
+ (set (make-local-variable 'comint-redirect-finished-regexp) prompt-regexp)
(add-hook 'comint-redirect-hook 'geiser-con--comint-redirect-hook nil t))
@@ -203,6 +201,12 @@
(geiser-con--process-completed-request req)
(geiser-con--connection-clean-current-request geiser-con--connection)))))
+(defadvice comint-redirect-setup
+ (after geiser-con--advice (output-buffer comint-buffer finished-regexp &optional echo))
+ (with-current-buffer comint-buffer
+ (when geiser-con--connection (setq mode-line-process nil))))
+(ad-activate 'comint-redirect-setup)
+
;;; Message sending interface:
diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el
index dbf277a..5b58a0a 100644
--- a/elisp/geiser-repl.el
+++ b/elisp/geiser-repl.el
@@ -67,6 +67,8 @@ REPL buffer."
(defvar geiser-repl--buffer nil
"The buffer in which the Guile REPL is running.")
+(defconst geiser-repl--prompt-regex "^[^() \n]+@([^)]*?)> ")
+
(defun geiser-repl--buffer ()
(if (buffer-live-p geiser-repl--buffer) geiser-repl--buffer
(with-current-buffer (get-buffer-create "*Geiser REPL*")
@@ -83,7 +85,7 @@ REPL buffer."
nil
"-L" (concat geiser-scheme-dir "/guile/") "-q")
(geiser-repl--wait-for-prompt 10000)
- (geiser-con--setup-connection (current-buffer))))
+ (geiser-con--setup-connection (current-buffer) geiser-repl--prompt-regex)))
(defun geiser-repl--process (&optional start)
(or (and (buffer-live-p (geiser-repl--buffer))
@@ -138,7 +140,8 @@ REPL buffer."
(define-derived-mode geiser-repl-mode comint-mode "Geiser REPL"
"Major mode for interacting with an inferior Guile repl process.
\\{geiser-repl-mode-map}"
- (set (make-local-variable 'comint-prompt-regexp) geiser-con--prompt-regex)
+ (set (make-local-variable 'mode-line-process) nil)
+ (set (make-local-variable 'comint-prompt-regexp) geiser-repl--prompt-regex)
(set (make-local-variable 'comint-use-prompt-regexp) t)
(set (make-local-variable 'comint-prompt-read-only) t))