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

    New sort function vertico-sort-directories-first
---
 CHANGELOG.org              |  2 ++
 README.org                 | 10 ++--------
 extensions/vertico-sort.el |  7 +++++++
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/CHANGELOG.org b/CHANGELOG.org
index 112d67fbbb..9cd645e0f4 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -4,6 +4,8 @@
 
 * Development
 
+- New function =vertico-sort-directories-first= which sorts a list of file 
names,
+  with directories coming first.
 - =vertico-multiform-mode=: Add =:keymap= setting per command or completion
   category. Either specify a list of key bindings or a keymap directly.
 - Disable =completion-eager-display= if Vertico is active.
diff --git a/README.org b/README.org
index 792bf71886..36d78545b9 100644
--- a/README.org
+++ b/README.org
@@ -345,14 +345,8 @@ Furthermore you can tune buffer-local settings per command 
or category.
 
 (setq vertico-multiform-categories
       '((symbol (vertico-sort-function . vertico-sort-alpha))
-        (file (vertico-sort-function . sort-directories-first)
+        (file (vertico-sort-function . vertico-sort-directories-first)
               (:keymap . vertico-directory-map))))
-
-;; Sort directories before files
-(defun sort-directories-first (files)
-  (setq files (vertico-sort-history-length-alpha files))
-  (nconc (seq-filter (lambda (x) (string-suffix-p "/" x)) files)
-         (seq-remove (lambda (x) (string-suffix-p "/" x)) files)))
 #+end_src
 
 Key maps or key bindings can be set per command or category.
@@ -364,7 +358,7 @@ Key maps or key bindings can be set per command or category.
 
 ;; Bind directory commands for all commands in file category.
 (setq vertico-multiform-categories
-      '((file (vertico-sort-function . sort-directories-first)
+      '((file (vertico-sort-function . vertico-sort-directories-first)
               (:keymap . vertico-directory-map))))
 #+end_src
 
diff --git a/extensions/vertico-sort.el b/extensions/vertico-sort.el
index dd479c87ee..6c67f1a490 100644
--- a/extensions/vertico-sort.el
+++ b/extensions/vertico-sort.el
@@ -124,5 +124,12 @@ The function is configured by BY, BSIZE, BINDEX, BPRED and 
PRED."
 (vertico-sort--define (length alpha) 48 (length %) string< 
vertico-sort--length-string<)
 (vertico-sort--define (alpha) 32 (if (equal % "") 0 (/ (aref % 0) 4)) string< 
string<)
 
+;;;###autoload
+(defun vertico-sort-directories-first (list)
+  "Sort directories before files in LIST."
+  (setq list (vertico-sort-history-length-alpha list))
+  (nconc (cl-loop for x in list if (string-suffix-p "/" x) collect x)
+         (cl-loop for x in list if (not (string-suffix-p "/" x)) collect x)))
+
 (provide 'vertico-sort)
 ;;; vertico-sort.el ends here

Reply via email to