]> git.eshelyaron.com Git - emacs.git/commitdiff
Add completions header line button for toggling annotations
authorEshel Yaron <me@eshelyaron.com>
Fri, 7 Jun 2024 18:55:59 +0000 (20:55 +0200)
committerEshel Yaron <me@eshelyaron.com>
Fri, 7 Jun 2024 18:55:59 +0000 (20:55 +0200)
lisp/minibuffer.el

index b0dff6f5f45177eb8d370f0c37cdd28749506337..9c3a46371330d5bc69048048fa5e70324c091eec 100644 (file)
@@ -2284,6 +2284,7 @@ completions."
 
 (defvar-local completions-base-prefix nil)
 (defvar-local completions-candidates nil)
+(defvar-local completions-annotations nil)
 (defvar-local completions-group-function nil)
 (defvar-local completions-category nil)
 (defvar-local completions-sort-function nil)
@@ -2399,10 +2400,27 @@ completions."
                                    (minibuffer-toggle-exceptional-candidates))))
                    map)))
 
+(defvar completions-header-annotations
+  `(:propertize (completions-annotations "@" "-")
+                mouse-face mode-line-highlight
+                help-echo "Toggle annotations"
+                keymap
+                ,(let ((map (make-sparse-keymap)))
+                   (define-key map [header-line mouse-2]
+                               (lambda (e)
+                                 (interactive "e")
+                                 (with-current-buffer
+                                     (buffer-local-value
+                                      'completion-reference-buffer
+                                      (window-buffer (posn-window (event-end e))))
+                                   (minibuffer-toggle-completions-annotations))))
+                   map)))
+
 (defvar completions-header-extra nil)
 
 (dolist (sym '(completions-header-count
                completions-header-category
+               completions-header-annotations
                completions-header-order
                completions-header-restriction
                completions-header-action
@@ -2423,6 +2441,7 @@ completions."
     completions-header-action
     completions-header-ignore-case
     completions-header-exceptional-candidates
+    completions-header-annotations
     (completions-header-extra (" | " completions-header-extra)))
   "Header line format of the *Completions* buffer.")
 
@@ -3101,6 +3120,7 @@ completions list."
                  :base-position base-position
                  :base-prefix base-prefix
                  :ignore-case completion-ignore-case
+                 :annotations minibuffer-completion-annotations
                  :insert-choice-function
                  (let ((cprops completion-extra-properties))
                    (lambda (start end choice)
@@ -3198,6 +3218,7 @@ PLIST is a property list with optional extra information about COMPLETIONS."
        completion-reference-buffer mainbuf
        completions-candidates completions
        completions-group-function group-fun
+       completions-annotations (plist-get plist :annotations)
        completions-style (plist-get plist :style)
        completion-base-position (plist-get plist :base-position)
        completions-base-prefix (plist-get plist :base-prefix)