Subject: bug#21634: text-scale-adjust suggestion

From: Juri Linkov <[email-masked]>
Date: Wed, 06 Jul 2022 20:42:20 +0300

>     >> format-spec is a nice helper.  Here are the changes after
>     >> the value of %k is automatically generated from the keys:
>     >>
>     >> emoji-zoom-increase:
>     >> OLD: Zoom with + and -
>     >> NEW: Zoom with +, -
>     >>
>     >> indent-rigidly:
>     >> OLD: Indent region with <left>, <right>, S-<left>, or S-<right>.
>     >> NEW: Indent region with TAB, <left>, <right>, S-<left>, S-<right>
>
>     Lars> I think the final ", " in these lists should be an " or " instead -- I
>     Lars> think that reads better.
>
> Yes

Should then describe-repeat-maps do the same and replace this

 next-error (bound to n, M-n)
 previous-error (bound to p, M-p)

with

 next-error (bound to n or M-n)
 previous-error (bound to p or M-p)

Then also should repeat-echo-message-string use "or" and replace

 Repeat with n, M-n

with

 Repeat with n or M-n

But doing this is problematic since when repeat-exit-key is defined,
it will also replace

 Repeat with n, M-n or exit with RET

with incorrect

 Repeat with n or M-n or exit with RET

>     >> global-text-scale-adjust:
>     >> OLD: Use +,-,0 for further adjustment
>     >> NEW: Use +, =, -, 0, ESC for further adjustment
>     >>
>     >> ESC is because map-keymap handles only top-level keys
>     >> but C-M-+ is [ESC C-+].
>
>     Lars> Hm.  We don't have any function that'll just spit out all the "real" key
>     Lars> binding in a keymap somewhere?  I.e., that results in a list with keys a
>     Lars> la what's displayed by `C-h b'?  I guess not, but that sounds like a
>     Lars> useful utility function to have, and could be used here.
>
> I think the guts of `describe-repeat-mapsʼ does something like that.

I forgot that describe-repeat-maps uses where-is-internal.
But I don't see how repeat-echo-message-string and set-transient-map
could use where-is-internal without iterating a huge list of all commands
from obarray.  There is no function to get all commands from the given
keymap only?

BTW, now I fixed describe-repeat-maps to handle the case when the
keymap is not a symbol, e.g.

  (put 'next-line 'repeat-map (define-keymap
                                "C-M-a" #'next-line
                                "C-M-b" #'next-line))

Also pushed new args of set-transient-map, so the same improvements
are needed for both repeat-echo-message-string and set-transient-map,
maybe by sharing the same code.