branch: externals/orderless
commit e015ac24ef6ad89615590df924d5c4c853bb7c11
Author: Daniel Mendler <m...@daniel-mendler.de>
Commit: Daniel Mendler <m...@daniel-mendler.de>

    Add orderless-kwd--orig-buffer helper
---
 orderless-kwd.el | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/orderless-kwd.el b/orderless-kwd.el
index f6c1c72f17..312a0ba2dd 100644
--- a/orderless-kwd.el
+++ b/orderless-kwd.el
@@ -70,12 +70,16 @@
                 :value-type (choice (list function) (list function (const t))))
   :group 'orderless)
 
-(defsubst orderless-kwd--buffer (str)
-  "Return buffer from candidate STR."
+(defsubst orderless-kwd--get-buffer (str)
+  "Return buffer from candidate STR taking `multi-category' into account."
   (when-let ((cat (get-text-property 0 'multi-category str)))
     (setq str (and (eq (car cat) 'buffer) (cdr cat))))
   (and str (get-buffer str)))
 
+(defsubst orderless-kwd--orig-buffer ()
+  "Return the original buffer before miniwindow selection."
+  (or (window-buffer (minibuffer-selected-window)) (current-buffer)))
+
 (defun orderless-kwd-category (pred regexp)
   "Match candidate category against PRED and REGEXP."
   (lambda (str)
@@ -91,7 +95,7 @@
 (defun orderless-kwd-content (_pred regexp)
   "Match buffer content against REGEXP."
   (lambda (str)
-    (when-let ((buf (orderless-kwd--buffer str)))
+    (when-let ((buf (orderless-kwd--get-buffer str)))
       (with-current-buffer buf
         (save-excursion
           (save-restriction
@@ -114,7 +118,7 @@
 
 (defun orderless-kwd-key (pred regexp)
   "Match command key binding against PRED and REGEXP."
-  (let ((buf (or (window-buffer (minibuffer-selected-window)) 
(current-buffer))))
+  (let ((buf (orderless-kwd--orig-buffer)))
     (lambda (str)
       (when-let ((sym (intern-soft str))
                  ((fboundp sym))
@@ -124,7 +128,7 @@
 
 (defun orderless-kwd-value (pred regexp)
   "Match variable value against PRED and REGEXP."
-  (let ((buf (or (window-buffer (minibuffer-selected-window)) 
(current-buffer))))
+  (let ((buf (orderless-kwd--orig-buffer)))
     (lambda (str)
       (when-let ((sym (intern-soft str))
                  ((boundp sym)))
@@ -135,7 +139,7 @@
 
 (defun orderless-kwd-off (_)
   "Match disabled minor modes."
-  (let ((buf (or (window-buffer (minibuffer-selected-window)) 
(current-buffer))))
+  (let ((buf (orderless-kwd--orig-buffer)))
     (lambda (str)
       (when-let ((sym (intern-soft str)))
         (and (boundp sym)
@@ -144,7 +148,7 @@
 
 (defun orderless-kwd-on (_)
   "Match enabled minor modes."
-  (let ((buf (or (window-buffer (minibuffer-selected-window)) 
(current-buffer))))
+  (let ((buf (orderless-kwd--orig-buffer)))
     (lambda (str)
       (when-let ((sym (intern-soft str)))
         (and (boundp sym)
@@ -154,13 +158,13 @@
 (defun orderless-kwd-modified (_)
   "Match modified buffers."
   (lambda (str)
-    (when-let ((buf (orderless-kwd--buffer str)))
+    (when-let ((buf (orderless-kwd--get-buffer str)))
       (buffer-modified-p buf))))
 
 (defun orderless-kwd-mode (pred regexp)
   "Match buffer mode name against PRED and REGEXP."
   (lambda (str)
-    (when-let ((buf (orderless-kwd--buffer str))
+    (when-let ((buf (orderless-kwd--get-buffer str))
                (mode (buffer-local-value 'major-mode buf)))
       (or (orderless--match-p pred regexp (symbol-name mode))
           (orderless--match-p pred regexp (format-mode-line
@@ -169,7 +173,7 @@
 (defun orderless-kwd-directory (pred regexp)
   "Match `default-directory' against PRED and REGEXP."
   (lambda (str)
-    (when-let ((buf (orderless-kwd--buffer str)))
+    (when-let ((buf (orderless-kwd--get-buffer str)))
       (orderless--match-p pred regexp
                           (buffer-local-value 'default-directory buf)))))
 

Reply via email to