Make more ranges sort properly in describe-keymap

* lisp/subr.el (keymap-canonicalize): Don't consider two-character
ranges as a range (bug#11325).
This commit is contained in:
Lars Ingebrigtsen 2022-01-31 17:31:09 +01:00
parent 1d1b664fbb
commit dbf08491a5
2 changed files with 13 additions and 4 deletions

View file

@ -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.

View file

@ -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