summaryrefslogtreecommitdiff
path: root/elisp
diff options
context:
space:
mode:
Diffstat (limited to 'elisp')
-rw-r--r--elisp/geiser-guile.el3
-rw-r--r--elisp/geiser-repl.el13
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