emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master a46421446f: Make Completions sorting a user option


From: Eli Zaretskii
Subject: master a46421446f: Make Completions sorting a user option
Date: Mon, 24 Jan 2022 08:37:38 -0500 (EST)

branch: master
commit a46421446ff2e97b01434a1d77fa149d985e6c7d
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Eli Zaretskii <eliz@gnu.org>

    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)
---
 etc/NEWS           |  5 +++++
 lisp/minibuffer.el | 17 ++++++++++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/etc/NEWS b/etc/NEWS
index 73d12a203e..3f6b2d2a1f 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -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
 
 +++
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index d58c23af8f..ecede9479d 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -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'.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]