diff options
| author | jao <jao@gnu.org> | 2026-04-26 19:50:45 +0100 |
|---|---|---|
| committer | jao <jao@gnu.org> | 2026-04-26 19:50:45 +0100 |
| commit | 185191df527b51ce521084f8c32030e87dabb5e9 (patch) | |
| tree | 44c49cd9de10aa19a2f625923281aee2b0b65c6d | |
| parent | df9a3d3d8ae10417294c076d5804643441a1efca (diff) | |
| download | geiser-master.tar.gz geiser-master.tar.bz2 | |
It all seems to boil down to ansi-color-filter not recognising the format used
by guile-colorized, and leaving behind some control characters that we're
cleaning manually after the fact.
This is not a great solution, as it applies a guile bandage to all
implementations: we should define an implementation-dependent filter for input
coming from a remote repl, but the fact that it has also to be applied to
connections complicates matters.
| -rw-r--r-- | elisp/geiser-base.el | 5 | ||||
| -rw-r--r-- | elisp/geiser-connection.el | 2 | ||||
| -rw-r--r-- | elisp/geiser-repl.el | 2 |
3 files changed, 7 insertions, 2 deletions
diff --git a/elisp/geiser-base.el b/elisp/geiser-base.el index 4194da5..71aa8b4 100644 --- a/elisp/geiser-base.el +++ b/elisp/geiser-base.el @@ -41,9 +41,14 @@ ;;; Utilities: +(require 'ansi-color) + (defsubst geiser--chomp (str) (if (string-match-p ".*\n$" str) (substring str 0 -1) str)) +(defsubst geiser--strip-ansi (s) + (replace-regexp-in-string "" "" (ansi-color-filter-apply s))) + (defun geiser--shorten-str (str len &optional sep) (let ((str-len (length str))) (if (<= str-len len) diff --git a/elisp/geiser-connection.el b/elisp/geiser-connection.el index 74f620b..f462b4c 100644 --- a/elisp/geiser-connection.el +++ b/elisp/geiser-connection.el @@ -81,7 +81,7 @@ (progn (geiser-log--error "Unexpected queue input:\n %s" in) (delete-region (point-min) (point-max))) (goto-char (point-max)) - (insert in) + (insert (geiser--strip-ansi in)) (goto-char (point-min)) (when (re-search-forward (tq-queue-head-regexp tq) nil t) (unwind-protect diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el index eff1419..8594462 100644 --- a/elisp/geiser-repl.el +++ b/elisp/geiser-repl.el @@ -1154,7 +1154,7 @@ buffer." (geiser-repl-autoeval-mode 1)) (when geiser-repl-superparen-mode-p (geiser-repl-superparen-mode 1)) - + (add-hook 'comint-preoutput-filter-functions #'geiser--strip-ansi nil t) ;; enabling compilation-shell-minor-mode without the annoying highlighter (compilation-setup t)) |
