branch: externals/vertico
commit 81539b89aa4ebbcfd5651aff8dbd73b29d268aba
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>
vertico-count-format: Better count formatting using display alignment
---
extensions/vertico-buffer.el | 8 +++++---
vertico.el | 27 ++++++++++++++++++---------
2 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/extensions/vertico-buffer.el b/extensions/vertico-buffer.el
index 59b17c6..38b03c2 100644
--- a/extensions/vertico-buffer.el
+++ b/extensions/vertico-buffer.el
@@ -52,10 +52,12 @@
(let ((str (buffer-string))
(pt (point)))
(if (= pt (point-max))
- (concat str #(" " 0 1 (face (:inverse-video t))))
+ (setq str (concat str #(" " 0 1 (face (:inverse-video t)))))
(setq pt (max (minibuffer-prompt-end) pt))
- (put-text-property (1- pt) pt 'face '(:inverse-video t) str)
- str))))
+ (put-text-property (1- pt) pt 'face '(:inverse-video t) str))
+ (when vertico-count-format
+ (setq str (concat (propertize (vertico--format-count) 'face
'minibuffer-prompt) str)))
+ str)))
(defun vertico-buffer--display (lines)
"Display LINES in buffer."
diff --git a/vertico.el b/vertico.el
index 2156aef..69238da 100644
--- a/vertico.el
+++ b/vertico.el
@@ -42,9 +42,10 @@
:group 'convenience
:prefix "vertico-")
-(defcustom vertico-count-format (cons "%-6s " "%s/%s")
+(defcustom vertico-count-format
+ '(7 "%s/%s ")
"Format string used for the candidate count."
- :type '(choice (const nil) (cons string string)))
+ :type '(choice (const nil) (list integer string)))
(defcustom vertico-group-format
(concat
@@ -489,17 +490,25 @@ See `resize-mini-windows' for documentation."
(and (< dp 0) (eq vertico-resize t)))
(window-resize nil dp nil nil 'pixelwise)))))
+(defun vertico--format-count ()
+ "Format the count string."
+ (when (stringp (car vertico-count-format))
+ (message "Deprecated `vertico-count-format' configuration.")
+ (setq vertico-count-format `(7 "%s/%s")))
+ (concat
+ (format (cadr vertico-count-format)
+ (cond ((>= vertico--index 0) (1+ vertico--index))
+ ((vertico--allow-prompt-selection-p) "*")
+ (t "!"))
+ vertico--total)
+ (propertize " " 'display
+ `(space :align-to (+ left ,(car vertico-count-format))))))
+
(defun vertico--display-count ()
"Update count overlay `vertico--count-ov'."
(when vertico--count-ov
(move-overlay vertico--count-ov (point-min) (point-min))
- (overlay-put vertico--count-ov 'before-string
- (format (car vertico-count-format)
- (format (cdr vertico-count-format)
- (cond ((>= vertico--index 0) (1+
vertico--index))
- ((vertico--allow-prompt-selection-p)
"*")
- (t "!"))
- vertico--total)))))
+ (overlay-put vertico--count-ov 'before-string (vertico--format-count))))
(defun vertico--tidy-shadowed-file ()
"Tidy shadowed file name, see `rfn-eshadow-overlay'."