branch: externals/consult
commit 41855bda5f0bc5050cdd602ecee75503ec58b959
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>

    Update consult--default-completion-list-candidate
---
 consult.el | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/consult.el b/consult.el
index 01c2e319bf..eb855f7d3a 100644
--- a/consult.el
+++ b/consult.el
@@ -5622,10 +5622,19 @@ the asynchronous search."
 
 (defun consult--default-completion-list-candidate ()
   "Return current candidate at point from completions buffer."
-  (when-let ((window (get-buffer-window "*Completions*" 'visible))
-             (buffer (window-buffer window))
-             ((eq (buffer-local-value 'completion-reference-buffer buffer)
-                  (window-buffer (active-minibuffer-window)))))
+  (when-let ((buffer
+              (if (derived-mode-p #'completion-list-mode)
+                  ;; Use current buffer if already inside *Completions* buffer
+                  (current-buffer)
+                ;; Otherwise check if there is an active *Completions* buffer
+                ;; which can be controlled remotely from the minibuffer.  See
+                ;; the setting `minibuffer-visible-completions'.
+                (when-let ((bound-and-true-p minibuffer-visible-completions)
+                           (window (get-buffer-window "*Completions*" 
'visible))
+                           (buffer (window-buffer window))
+                           ((eq (buffer-local-value 
'completion-reference-buffer buffer)
+                                (window-buffer (active-minibuffer-window)))))
+                  buffer))))
     (with-current-buffer buffer
       ;; TODO Use `completion-list-candidate-at-point' on Emacs 31
       (let (beg)

Reply via email to