Subject: bug#25318: 24.5; Put `M-s' on a prefix keymap in Isearch

From: Drew Adams <[email-masked]>
Date: Sun, 29 Sep 2019 11:45:34 -0700 (PDT)

> > Currently, `isearch-mode-map' has a number of key sequences bound in it
> > that begin with prefix-key `M-s':...
> > Since these keys do not form any _specific_ grouping, I'd propose a
> > name for the keymap such as `isearch-misc-map' (better than nothing).
> 
> As you point out, these commands aren't functional grouping of any kind,
> so I don't think it makes sense to put them on a separate map.  It's not
> like anybody would want to put all those functions somewhere else, which
> is the primary reason to have sub-keymaps.

They are all on the same prefix key.  So yes, there is a good reason why someone might "want to put all those functions somewhere else": to put them on another prefix key.

That's the raison d'etre for a prefix-map variable: to be able to easily reuse or move all of its bindings at once, e.g. to another prefix key.

If there's a reason why each of the commands is on prefix key `M-s' then the same reason applies for putting them on another prefix key - move/reuse them all, together.

Whether one or more of those commands shouldn't really be on the same prefix key is a separate question, for the maintainers of isearch.el to consider.  It's unrelated to the need/desire to grab put all of the `M-s' commands on another (additional or replacement) prefix key.

> > This will let users and other libraries move the prefix keymap to a
> > different prefix key if they want, or define `M-s C-h' to show only the
> > bindings on prefix `M-s', and so on.

Clear, no?  Both the 1st part and the 2nd, regarding `M-s C-h'.  The desire to offer `M-s C-h' is an additional reason to add a prefix-key variable for prefix key `M-s'.

> > As it stands now, a 3rd-party library cannot do what this bug report
> > requests, because there are likely other libraries, which may be loaded
> > before it, and which bind `M-s <whatever' directly in
> > `isearch-mode-map'.  Those bindings would be wiped out by a later
> > binding of `M-s' to a prefix map.

Also clear, no?

> > But if this is done in core Emacs then there will be no such problem
> > (there is no problem if a library binds `M-s <whatever>' directly in
> > `isearch-mode-map' AFTER the prefix map has been placed on
> > `isearch-mode-map).
> 
> So your use case is that you want to bind `M-s' to a prefix map
> out-of-tree?

Sorry, I don't know what "out-of-tree" means.

See above for the reasons for this request.  It's not about wanting to bind `M-s'.  It's about wanting to bind another prefix key.  And it's about providing `M-s C-h'.  The prefix key should have a keymap, usable by users and libraries.