From e14bbe5c8c18bcc0f202a4362ff573e6c02034d9 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Sat, 11 Dec 2010 03:03:00 +0100 Subject: Make the position of long expressions in debug buffer customizable This is Emacs, after all. --- elisp/geiser-debug.el | 35 +++++++++++++++++++++++++++++++---- elisp/geiser.el | 1 + 2 files changed, 32 insertions(+), 4 deletions(-) (limited to 'elisp') 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 @@ -19,6 +19,29 @@ (require 'geiser-popup) (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: @@ -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 -- cgit v1.2.3