summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2021-04-09 16:54:34 +0100
committerjao <jao@gnu.org>2021-04-09 16:54:34 +0100
commitd7ba81b402787e3315b40f60952f95816a1cf99c (patch)
tree539449c1f5bedf94e26af0b36052af4ad1c7aadb
parent8dfa75860e60a31f2a441ef2771c26880f979f9b (diff)
downloadgeiser-d7ba81b402787e3315b40f60952f95816a1cf99c.tar.gz
geiser-d7ba81b402787e3315b40f60952f95816a1cf99c.tar.bz2
Optionally treat ANSI colors in dbg buffer
This is controlled by the new customizable variable geiser-debug-treat-ansi-colors, which can be set to either nil (do nothing), 'colors (fontify colors) or 'remove (just strip all ANSI codes).
-rw-r--r--elisp/geiser-debug.el27
1 files changed, 21 insertions, 6 deletions
diff --git a/elisp/geiser-debug.el b/elisp/geiser-debug.el
index 561aac2..a064589 100644
--- a/elisp/geiser-debug.el
+++ b/elisp/geiser-debug.el
@@ -1,6 +1,6 @@
;;; geiser-debug.el -- displaying debug information and evaluation results
-;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2020 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2020, 2021 Jose Antonio Ortega Ruiz
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the Modified BSD License. You should
@@ -21,6 +21,8 @@
(require 'geiser-base)
(require 'geiser-image)
+(require 'ansi-color)
+
;;; Customization:
@@ -33,7 +35,6 @@
error after the error message in the debug pop-up. If nil,
expressions shorter than `geiser-debug-long-sexp-lines` lines are
shown before the error message."
- :group 'geiser-debug
:type 'boolean)
(geiser-custom--defcustom geiser-debug-long-sexp-lines 6
@@ -41,7 +42,6 @@ shown before the error message."
of the debug pop-up (after the error message). If
`geiser-debug-always-display-sexp-after-p` is t, this variable
has no effect."
- :group 'geiser-debug
:type 'int)
(geiser-custom--defcustom geiser-debug-jump-to-debug-p t
@@ -49,7 +49,6 @@ has no effect."
in case of evaluation errors.
See also `geiser-debug-show-debug-p`. "
- :group 'geiser-debug
:type 'boolean)
(geiser-custom--defcustom geiser-debug-show-debug-p t
@@ -58,7 +57,6 @@ case of evaluation errors.
This option takes effect even if `geiser-debug-jump-to-debug-p`
is set."
- :group 'geiser-debug
:type 'boolean)
(geiser-custom--defcustom geiser-debug-auto-display-images-p t
@@ -66,9 +64,23 @@ is set."
images when they're evaluated.
See also `geiser-repl-auto-display-images-p'."
- :group 'geiser-debug
:type 'boolean)
+(geiser-custom--defcustom geiser-debug-treat-ansi-colors nil
+ "Colorize ANSI escape sequences produced by the scheme process.
+
+Some schemes are able to colorize their evaluation or error
+results using ANSI color sequences (e.g. when using the the
+colorized module in Guile).
+
+If set to `nil', no special treatment is applied to output. The
+symbol colors indicates colorizing the display of the Geiser dbg
+buffer using any color escape, and the symbol remove to remove
+all ANSI sequences."
+ :type '(choice (const :tag "No special treatment" nil)
+ (const :tag "Use font lock for colors" colors)
+ (const :tag "Remove all ANSI codes" remove)))
+
;;; Debug buffer mode:
@@ -166,6 +178,9 @@ buffer.")
(goto-char (point-max))
(insert "\nExpression evaluated was:\n\n")
(geiser-debug--display-error impl module nil what))
+ (case geiser-debug-treat-ansi-colors
+ (colors (ansi-color-apply-on-region (point-min) (point)))
+ (remove (ansi-color-filter-region (point-min) (point))))
(goto-char (point-min)))
(when (or img dbg)
(when (or geiser-debug-jump-to-debug-p geiser-debug-show-debug-p)