]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/simple.el (next-error-quit-window): New function (bug#44611).
authorJuri Linkov <juri@linkov.net>
Thu, 18 Mar 2021 17:56:45 +0000 (19:56 +0200)
committerJuri Linkov <juri@linkov.net>
Thu, 18 Mar 2021 17:56:45 +0000 (19:56 +0200)
(next-error-found-function): Add it as a choice.

etc/NEWS
lisp/simple.el

index d5cfed46fb8189a430d8f4f0f3e79e07cf84daa1..7b7678280b01aa1949fabdf230e96192a5936861 100644 (file)
--- 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
index 37aa650b30e9e4650db6f3fb87cbe9a4a5fdfaaa..eeef40f384017de6a1e2f5019fa6b44165ef7f0f 100644 (file)
@@ -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")