diff options
-rw-r--r-- | elisp/geiser-debug.el | 35 | ||||
-rw-r--r-- | elisp/geiser.el | 1 |
2 files changed, 32 insertions, 4 deletions
diff --git a/elisp/geiser-debug.el b/elisp/geiser-debug.el index 25391db..76865f3 100644 --- a/elisp/geiser-debug.el +++ b/elisp/geiser-debug.el @@ -20,6 +20,29 @@ (require 'geiser-base) +;;; Customization: + +(defgroup geiser-debug nil + "Debugging and error display options." + :group 'geiser) + +(geiser-custom--defcustom geiser-debug-always-display-sexp-after-p nil + "Whether to always display the sexp whose evaluation caused an +error after the error message in the debug pop-up. If nil, +expressions shorter than `geiser-debug-long-sexp-lines` lines are +show before the error message." + :group 'geiser-debug + :type 'boolean) + +(geiser-custom--defcustom geiser-debug-long-sexp-lines 6 + "Length of an expression in order to be relegated to the bottom +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) + + ;;; Debug buffer mode: (defvar geiser-debug-mode-map @@ -72,6 +95,13 @@ non-null value.") "This method is called upon entering the debugger, in the REPL buffer.") +(defun geiser-debug--display-after (what) + (or geiser-debug-always-display-sexp-after-p + (>= (with-temp-buffer + (insert what) + (count-lines (point-min) (point-max))) + geiser-debug-long-sexp-lines))) + (defun geiser-debug--display-retort (what ret &optional res) (let* ((err (geiser-eval--retort-error ret)) (key (geiser-eval--error-key err)) @@ -82,10 +112,7 @@ buffer.") (dir default-directory) (buffer (current-buffer)) (debug (eq key 'geiser-debugger)) - (lines (with-temp-buffer - (insert what) - (count-lines (point-min) (point-max)))) - (after (> lines 5))) + (after (geiser-debug--display-after what))) (when debug (switch-to-geiser nil nil buffer) (geiser-debug--enter-debugger impl)) diff --git a/elisp/geiser.el b/elisp/geiser.el index d293423..e9f9dbb 100644 --- a/elisp/geiser.el +++ b/elisp/geiser.el @@ -76,6 +76,7 @@ geiser-repl geiser-autodoc geiser-doc + geiser-debug geiser-faces geiser-mode geiser-guile |