diff options
author | Dan Leslie <dan@ironoxide.ca> | 2015-08-27 22:25:04 -0700 |
---|---|---|
committer | Dan Leslie <dan@ironoxide.ca> | 2015-08-27 22:44:46 -0700 |
commit | 334db07445e9594632c7270587c4503ec8713967 (patch) | |
tree | 66aef76068cc660ea78320dd657bed6ac3614d87 | |
parent | 0f66c250245af1348a3ee5a698c69ec4245e2194 (diff) | |
download | geiser-guile-334db07445e9594632c7270587c4503ec8713967.tar.gz geiser-guile-334db07445e9594632c7270587c4503ec8713967.tar.bz2 |
Now suppress loading messages
Chicken won't become available to Geiser until it's actually done
loading. A number of bugs are related to this, including jaor/geiser#68
but also some quizzically flaky completion behaviour.
The fix is to suppress output to STDOUT until Chicken is ready; output
to STDERR is not suppressed, so if bad things happen it will still
appear in the geiser messages buffer.
This may fix jaor/geiser#68
-rw-r--r-- | elisp/geiser-chicken.el | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/elisp/geiser-chicken.el b/elisp/geiser-chicken.el index d5cda6d..6e7d1bf 100644 --- a/elisp/geiser-chicken.el +++ b/elisp/geiser-chicken.el @@ -268,7 +268,15 @@ This function uses `geiser-chicken-init-file' if it exists." (let ((geiser-log-verbose-p t) (geiser-chicken-load-file (expand-file-name "chicken/geiser/emacs.scm" geiser-scheme-dir))) (if geiser-chicken-compile-geiser-p - (geiser-eval--send/wait (format "(use utils)(compile-file \"%s\")(import geiser)" + (geiser-eval--send/wait (format " +;; Sadly, (use import compile-file) must be run at top-level, so we have a stdout binding +(define geiser-stdout (current-output-port)) +(current-output-port (make-output-port (lambda a #f) (lambda a #f))) +(use utils) +(compile-file \"%s\") +(import geiser) +(current-output-port geiser-stdout) +" geiser-chicken-load-file)) (geiser-eval--send/wait (format "(load \"%s\")" geiser-chicken-load-file))))) |