Subject: 27.2; Call `describe-specified-language-support' without menu-bar

From: Drew Adams <[email-masked]>
Date: Wed, 29 Dec 2021 17:14:22 +0000

`describe-specified-language-support' raises an error if it is called
other than by way of the menu-bar.  Please remove this restriction -
make it possible to invoke it any other way as well.

See this comment in mule-cmds.el:

;; This function is intended to be called from the menu:
;;   [menu-bar mule describe-language-environment LANGUAGE]
;; and should not run it by `M-x describe-current-input-method-function'.

That comment doesn't say _WHY_ there's this design constraint.  Why
should it be important that it be called only from the menu-bar, and
(for example) with no variable or argument that provides whatever
context/values are needed for it to do its job?

This seems to be an unnecessary, arbitrary limitation.  The code seems
fragile and inflexible.  It should not matter how/where such a command
is invoked.
___

A use case: an environment (library lacarte.el is one) that lets you
access commands in menu-bar menus using completion (so, direct access
anywhere in the menu hierarchy, with substring completion etc.).

It should be possible to invoke the command in any way: that way (menu
completion), `M-x', or with a keyboard key binding.
___

If there are other commands with similar limitations, please fix them
as well.  (`setup-specified-language-environment', perhaps?)
__

And I wonder if there are related bugs in mule-cmds.el.  I see this:

;; FIXME: This "read-key-sequence + call-interactively" loop is trying to
;; reproduce the normal command loop, but this "can't" be done faithfully so
;; it necessarily suffers from breakage in corner cases (e.g. it fails to run
;; pre/post-command-hook, doesn't properly set this-command/last-command, it
;; doesn't handle keyboard macros, ...).

Perhaps that's not directly related.  But those features of command
invoking are important.  Making the commands in this library more
normal would help all around.

In GNU Emacs 27.2 (build 1, x86_64-w64-mingw32)
 of 2021-03-26 built on CIRROCUMULUS
Repository revision: deef5efafb70f4b171265b896505b92b6eef24e6
Repository branch: HEAD
Windowing system distributor 'Microsoft Corp.', version 10.0.19042
System Description: Microsoft Windows 10 Pro (v10.0.2009.19042.1348)