'(completions-category
("" (:eval (symbol-name completions-category)) " ")))
+(defun completions-header-sort (e)
+ (interactive "e")
+ (with-current-buffer
+ (buffer-local-value
+ 'completion-reference-buffer
+ (window-buffer (posn-window (event-end e))))
+ (minibuffer-sort-completions 1)))
+
+(defun completions-header-reverse (e)
+ (interactive "e")
+ (with-current-buffer
+ (buffer-local-value
+ 'completion-reference-buffer
+ (window-buffer (posn-window (event-end e))))
+ (minibuffer-sort-completions -1)))
+
+(defvar-keymap completions-header-order-map
+ :doc "Keymap for modifying completions sorting with the mouse."
+ (key-description [header-line mouse-2]) #'completions-header-sort
+ (key-description [header-line mouse-3]) #'completions-header-reverse)
+
(defvar completions-header-order
'(""
(:eval
- (let ((sd (or (nth 4 (seq-find
- (lambda (order)
- (eq
- (nth 3 order)
- (advice--cd*r
- completions-sort-function)))
- completions-sort-orders))
- "default"))
- (rv (advice-function-member-p #'reverse completions-sort-function)))
- (concat (if rv "↑" "↓")
- sd
- (if rv "↑" "↓"))))
+ (propertize
+ (let ((sd (or (nth 4 (seq-find
+ (lambda (order)
+ (eq
+ (nth 3 order)
+ (advice--cd*r
+ completions-sort-function)))
+ completions-sort-orders))
+ "default"))
+ (rv (advice-function-member-p #'reverse completions-sort-function)))
+ (concat (if rv "↑" "↓")
+ sd
+ (if rv "↑" "↓")))
+ 'mouse-face 'mode-line-highlight
+ 'help-echo "mouse-2: Change sort order\nmouse-3: Reverse order"
+ 'keymap completions-header-order-map))
" "))
(defvar completions-header-restriction