From: Lars Ingebrigtsen <larsi@gnus.org>
Date: Mon, 31 Jan 2022 16:31:09 +0000 (+0100)
Subject: Make more ranges sort properly in describe-keymap
X-Git-Tag: emacs-29.0.90~2619
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=dbf08491a5a45d88048082ba6ece1b61bdbc622b;p=emacs.git

Make more ranges sort properly in describe-keymap

* lisp/subr.el (keymap-canonicalize): Don't consider two-character
ranges as a range (bug#11325).
---

diff --git a/lisp/subr.el b/lisp/subr.el
index fccd75361bd..a1eb6fe3afb 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1149,8 +1149,17 @@ Subkeymaps may be modified but are not canonicalized."
       (setq map (map-keymap ;; -internal
                  (lambda (key item)
                    (if (consp key)
-                       ;; Treat char-ranges specially.
-                       (push (cons key item) ranges)
+                       (if (= (car key) (1- (cdr key)))
+                           ;; If we have a two-character range, then
+                           ;; treat it as two separate characters
+                           ;; (because this makes `describe-bindings'
+                           ;; look better and shouldn't affect
+                           ;; anything else).
+                           (progn
+                             (push (cons (car key) item) bindings)
+                             (push (cons (cdr key) item) bindings))
+                         ;; Treat char-ranges specially.
+                         (push (cons key item) ranges))
                      (push (cons key item) bindings)))
                  map)))
     ;; Create the new map.
diff --git a/test/lisp/help-tests.el b/test/lisp/help-tests.el
index d27e3d7cd4d..9c9dddcd19c 100644
--- a/test/lisp/help-tests.el
+++ b/test/lisp/help-tests.el
@@ -286,11 +286,11 @@ M-g M-c		switch-to-completions
            "
 Key             Binding
 -+
-( .. )		short-range
 1 .. 4		foo-range
 a .. c		foo-other-range
 
 C-e		foo-something
+( .. )		short-range
 x		foo-original
 <F1>		foo-function-key1
 "))))
@@ -304,12 +304,12 @@ x		foo-original
            "
 Key             Binding
 -+
-( .. )		short-range
 1 .. 4		foo-range
 a .. c		foo-other-range
 
 C-e		foo-something
   (this binding is currently shadowed)
+( .. )		short-range
 x		foo-original
   (this binding is currently shadowed)
 <F1>		foo-function-key1