Make Completions sorting a user option

* etc/NEWS: Document the new user option.
* lisp/minibuffer.el (completions-sort): Add new user option.
(minibuffer-completion-help): Implement it for the Completions
buffer.  (Bug#53362)
This commit is contained in:
Protesilaos Stavrou 2022-01-19 14:20:19 +02:00 committed by Eli Zaretskii
parent ead9547903
commit a46421446f
2 changed files with 21 additions and 1 deletions

View file

@ -429,6 +429,11 @@ When non-nil, the commands 'next-completion' and 'previous-completion'
automatically wrap around on reaching the beginning or the end of
the "*Completions*" buffer.
*** New user option 'completions-sort'.
This option controls the sorting of the completion candidates in
the *Completions* buffer. Available styles are no sorting,
alphabetical (the default), or a custom sort function.
** Isearch and Replace
+++

View file

@ -1173,6 +1173,18 @@ completion candidates than this number."
:version "24.1"
:type completion--cycling-threshold-type)
(defcustom completions-sort 'alphabetical
"Sort candidates in the *Completions* buffer.
The value can be nil to disable sorting, `alphabetical' for
alphabetical sorting or a custom sorting function. The sorting
function takes and returns a list of completion candidate
strings."
:type '(choice (const :tag "No sorting" nil)
(const :tag "Alphabetical sorting" alphabetical)
function :tag "Custom function")
:version "29.1")
(defcustom completions-group nil
"Enable grouping of completion candidates in the *Completions* buffer.
See also `completions-group-format' and `completions-group-sort'."
@ -2268,7 +2280,10 @@ variables.")
;; same, but not always.
(setq completions (if sort-fun
(funcall sort-fun completions)
(sort completions 'string-lessp)))
(pcase completions-sort
('nil completions)
('alphabetical (sort completions #'string-lessp))
(_ (funcall completions-sort completions)))))
;; After sorting, group the candidates using the
;; `group-function'.