summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuri Linkov <juri@linkov.net>2021-03-18 19:56:45 +0200
committerJuri Linkov <juri@linkov.net>2021-03-18 19:56:45 +0200
commitb0902d926dd837ad06c9c6bbde35a5411a351779 (patch)
tree4b76164062685271f5a38c523b912679d84d935d
parentd3dbf017c84959337b61b0f6809f74778b1bffe9 (diff)
downloademacs-b0902d926dd837ad06c9c6bbde35a5411a351779.tar.gz
* lisp/simple.el (next-error-quit-window): New function (bug#44611).
(next-error-found-function): Add it as a choice.
-rw-r--r--etc/NEWS6
-rw-r--r--lisp/simple.el11
2 files changed, 17 insertions, 0 deletions
diff --git a/etc/NEWS b/etc/NEWS
index d5cfed46fb8..7b7678280b0 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1934,6 +1934,12 @@ highlight the current error message in the 'next-error' buffer.
This user option can be also customized to keep highlighting on all
visited errors, so you can have an overview what errors were already visited.
+---
+*** New choice 'next-error-quit-window' for 'next-error-found-function'.
+When 'next-error-found-function' is customized to 'next-error-quit-window',
+then typing the numeric prefix argument 0 before the command 'next-error'
+will quit the source window after visiting the next occurrence.
+
+++
*** New user option 'tab-first-completion'.
If 'tab-always-indent' is 'complete', this new user option can be used to
diff --git a/lisp/simple.el b/lisp/simple.el
index 37aa650b30e..eeef40f3840 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -377,11 +377,22 @@ To control which errors are matched, customize the variable
(not (eq prev next-error-last-buffer)))
(message "Current locus from %s" next-error-last-buffer)))))
+(defun next-error-quit-window (from-buffer to-buffer)
+ "Quit window of FROM-BUFFER when the prefix arg is 0.
+Intended to be used in `next-error-found-function'."
+ (when (and (eq current-prefix-arg 0) from-buffer
+ (not (eq from-buffer to-buffer)))
+ (let ((window (get-buffer-window from-buffer)))
+ (when (window-live-p window)
+ (quit-restore-window window)))))
+
(defcustom next-error-found-function #'ignore
"Function called when a next locus is found and displayed.
Function is called with two arguments: a FROM-BUFFER buffer
from which next-error navigated, and a target buffer TO-BUFFER."
:type '(choice (const :tag "No default" ignore)
+ (const :tag "Quit previous window with M-0"
+ next-error-quit-window)
(function :tag "Other function"))
:group 'next-error
:version "27.1")