branch: externals/vertico
commit 81539b89aa4ebbcfd5651aff8dbd73b29d268aba
Author: Daniel Mendler <m...@daniel-mendler.de>
Commit: Daniel Mendler <m...@daniel-mendler.de>

    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'."

Reply via email to