diff options
Diffstat (limited to 'elisp')
-rw-r--r-- | elisp/geiser-guile.el | 3 | ||||
-rw-r--r-- | elisp/geiser-repl.el | 13 |
2 files changed, 16 insertions, 0 deletions
diff --git a/elisp/geiser-guile.el b/elisp/geiser-guile.el index 8d8c4f3..6086dd8 100644 --- a/elisp/geiser-guile.el +++ b/elisp/geiser-guile.el @@ -18,6 +18,8 @@ (require 'geiser-edit) (require 'geiser) +(require 'compile) + ;;; Customization: @@ -125,6 +127,7 @@ This function uses `geiser-guile-init-file' if it exists." (when (eq key 'geiser-debugger) (let ((bt-cmd (format ",%s\n" (if geiser-guile-debug-show-bt-p "bt" "fr")))) + (compilation-forget-errors) (goto-char (point-max)) (comint-send-string nil "((@ (geiser emacs) ge:newline))\n") (comint-send-string nil ",error-message\n") diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el index dd85808..b8bb86d 100644 --- a/elisp/geiser-repl.el +++ b/elisp/geiser-repl.el @@ -79,6 +79,16 @@ implementation name gets appended to it." :type 'boolean :group 'geiser-repl) +(geiser-custom--defcustom geiser-repl-forget-old-errors-p t + "Whether to forget old errors upon entering a new expression. + +When on (the default), every time a new expression is entered in +the REPL old error messages are flushed, and using [[next-error]] +afterwards will jump only to error locations produced by the new +expression, if any." + :type 'boolean + :group 'geiser-repl) + ;;; Geiser REPL buffers and processes: @@ -402,6 +412,9 @@ module command as a string") (pmark (and proc (process-mark proc))) (intxt (and pmark (buffer-substring pmark (point))))) (when intxt + (when (and geiser-repl-forget-old-errors-p + (not (geiser-con--is-debugging))) + (compilation-forget-errors)) (comint-send-input) (when (string-match "^\\s-*$" intxt) (comint-send-string proc |