[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#44611: Prefix arg for xref-goto-xref
From: |
Juri Linkov |
Subject: |
bug#44611: Prefix arg for xref-goto-xref |
Date: |
Wed, 17 Mar 2021 19:23:58 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu) |
>> (defun next-error-quit-window ()
>> (when (and (eq current-prefix-arg 0)
>> (not (eq next-error-last-buffer (current-buffer))))
>> (let ((window (get-buffer-window next-error-last-buffer)))
>> (when (window-live-p window)
>> (with-selected-window window
>> (quit-restore-window window))))))
>> (add-hook 'next-error-hook 'next-error-quit-window)
>
> Since next-error-hook is a defcustom, perhaps we can/should include this
> function as one of the advertised values in :type?
>
> Even if we keep the list nil by default.
I completely forgot that we have 'next-error-found-function',
so implemented it with 'next-error-hook'. I don't remember
why we have both.
Anyway, here is a patch with corrections from Martin:
diff --git a/lisp/simple.el b/lisp/simple.el
index 94d79c2bf1..73020c2c8e 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -377,11 +377,22 @@ next-error-internal
(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")