summaryrefslogtreecommitdiff
path: root/elisp/geiser-chicken.el
diff options
context:
space:
mode:
authorDan Leslie <dan@ironoxide.ca>2015-08-27 22:25:04 -0700
committerDan Leslie <dan@ironoxide.ca>2015-08-27 22:44:46 -0700
commit334db07445e9594632c7270587c4503ec8713967 (patch)
tree66aef76068cc660ea78320dd657bed6ac3614d87 /elisp/geiser-chicken.el
parent0f66c250245af1348a3ee5a698c69ec4245e2194 (diff)
downloadgeiser-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
Diffstat (limited to 'elisp/geiser-chicken.el')
-rw-r--r--elisp/geiser-chicken.el10
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)))))