diff options
| author | Daniel Mendler <mail@daniel-mendler.de> | 2024-03-06 13:56:43 +0100 |
|---|---|---|
| committer | Daniel Mendler <mail@daniel-mendler.de> | 2024-03-06 13:58:24 +0100 |
| commit | cc970e862581d2681d9d85e8f609017911007bc0 (patch) | |
| tree | dbbcf2375215ad909ba51eae9bfad7e983b3b8e7 | |
| parent | 62b0b6dc57d7c9957d4e8d3e1c6d6a421e8f3055 (diff) | |
orderless-kwd-mode: Support bookmark filtering
| -rw-r--r-- | orderless-kwd.el | 25 |
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." |
