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