summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mendler <mail@daniel-mendler.de>2024-03-06 13:56:43 +0100
committerDaniel Mendler <mail@daniel-mendler.de>2024-03-06 13:58:24 +0100
commitcc970e862581d2681d9d85e8f609017911007bc0 (patch)
treedbbcf2375215ad909ba51eae9bfad7e983b3b8e7
parent62b0b6dc57d7c9957d4e8d3e1c6d6a421e8f3055 (diff)
orderless-kwd-mode: Support bookmark filtering
-rw-r--r--orderless-kwd.el25
1 files changed, 18 insertions, 7 deletions
diff --git a/orderless-kwd.el b/orderless-kwd.el
index 8560d9b..6812bfb 100644
--- a/orderless-kwd.el
+++ b/orderless-kwd.el
@@ -167,14 +167,25 @@ as a flag and does not require input."
(buffer-modified-p buf))))
(defun orderless-kwd-mode (pred regexp)
- "Match buffer mode name against PRED and REGEXP."
+ "Match buffer mode or bookmark type against PRED and REGEXP."
+ (declare-function bookmark-prop-get "bookmark")
(lambda (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 (buffer-local-value 'mode-name buf)))))))
+ (if-let ((buf (orderless-kwd--get-buffer str)))
+ (when-let ((mode (buffer-local-value 'major-mode buf)))
+ (or (orderless--match-p pred regexp (symbol-name mode))
+ (orderless--match-p pred regexp
+ (format-mode-line
+ (buffer-local-value 'mode-name buf)))))
+ (when-let ((name (if-let ((cat (get-text-property 0 'multi-category str)))
+ (and (eq (car cat) 'bookmark) (cdr cat))
+ str))
+ (bm (assoc name (bound-and-true-p bookmark-alist)))
+ (handler (or (bookmark-prop-get bm 'handler)
+ 'bookmark-default-handler))
+ ((symbolp handler)))
+ (orderless--match-p pred regexp
+ (or (get handler 'bookmark-handler-type)
+ (symbol-name handler)))))))
(defun orderless-kwd-directory (pred regexp)
"Match `default-directory' against PRED and REGEXP."