summaryrefslogtreecommitdiff
path: root/elisp
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2026-04-26 19:50:45 +0100
committerjao <jao@gnu.org>2026-04-26 19:50:45 +0100
commit185191df527b51ce521084f8c32030e87dabb5e9 (patch)
tree44c49cd9de10aa19a2f625923281aee2b0b65c6d /elisp
parentdf9a3d3d8ae10417294c076d5804643441a1efca (diff)
downloadgeiser-185191df527b51ce521084f8c32030e87dabb5e9.tar.gz
geiser-185191df527b51ce521084f8c32030e87dabb5e9.tar.bz2
new attempt at fixing #74HEADmaster
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.
Diffstat (limited to 'elisp')
-rw-r--r--elisp/geiser-base.el5
-rw-r--r--elisp/geiser-connection.el2
-rw-r--r--elisp/geiser-repl.el2
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))