From 185191df527b51ce521084f8c32030e87dabb5e9 Mon Sep 17 00:00:00 2001 From: jao Date: Sun, 26 Apr 2026 19:50:45 +0100 Subject: new attempt at fixing #74 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. --- elisp/geiser-base.el | 5 +++++ elisp/geiser-connection.el | 2 +- elisp/geiser-repl.el | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) (limited to 'elisp') 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)) -- cgit v1.2.3