branch: externals/marginalia commit 80fa320fd14c741f6c8fb152cf0a9b4f0d0b1a7e Author: Omar Antolín <omar.anto...@gmail.com> Commit: Omar Antolín <omar.anto...@gmail.com>
Introduce list of classifiers The new variable marginalia-classifiers will contain functions that are run one after another to attempt to determine the category metadatum. The existing logic for determining the category has been moved into marginalia-classify-by-command-name. --- marginalia.el | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/marginalia.el b/marginalia.el index 7559307..0b6dd71 100644 --- a/marginalia.el +++ b/marginalia.el @@ -73,6 +73,15 @@ Annotations are only shown if `marginalia-mode' is enabled." :type '(alist :key-type symbol :value-type function) :group 'marginalia) +(defcustom marginalia-classifiers + '(marginalia-classify-by-command-name) + "List of functions to determine current completion category. +Each function should take no arguments and return a symbol +indicating the category, or nil to indicate it could not +determine it." + :type 'hook + :group 'marginalia) + (defcustom marginalia-command-category-alist '((execute-extended-command . command) (customize-face . face) @@ -207,6 +216,11 @@ Annotations are only shown if `marginalia-mode' is enabled." (mapcar (lambda (cand) (concat cand (funcall annotate cand))) candidates) candidates)) +(defun marginalia-classify-by-command-name () + "Lookup category for current command." + (and marginalia--this-command + (alist-get marginalia--this-command marginalia-command-category-alist))) + (defun marginalia--completion-metadata-get (_metadata prop) "Advice for `completion-metadata-get'. Replaces the category and annotation function. @@ -219,8 +233,7 @@ PROP is the property which is looked up." (when-let (cat (marginalia--category-type)) (alist-get cat marginalia-annotator-alist))) ('category - (and marginalia--this-command - (alist-get marginalia--this-command marginalia-command-category-alist))))) + (run-hook-with-args-until-success 'marginalia-classifiers)))) (defun marginalia--minibuffer-setup () "Setup minibuffer for `marginalia-mode'.