From 9df5971ee7aa9c5562a96c4e0af3be944b9fd78b Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Sun, 15 Feb 2009 19:54:14 +0100 Subject: Avoing REPL modeline message flickering on redirection. --- elisp/geiser-connection.el | 16 ++++++++++------ elisp/geiser-repl.el | 7 +++++-- 2 files changed, 15 insertions(+), 8 deletions(-) (limited to 'elisp') 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)) -- cgit v1.2.3