Improve documentation of 'M-X' and related features
* doc/emacs/m-x.texi (M-x): Index 'M-X'. * doc/lispref/commands.texi (Interactive Call, Command Modes): Mention 'M-X' and 'execute-extended-command-for-buffer'. * etc/NEWS: Clarify that the '(declare (completion ...' and '(declare (modes ...' forms have no effect by default. Likewise for '(interactive "..." MODE)' specs. (Bug#52839)
This commit is contained in:
parent
06dcd2be5d
commit
f11779f01b
3 changed files with 40 additions and 14 deletions
|
@ -59,6 +59,7 @@ the option @code{read-extended-command-predicate} to exclude those
|
||||||
irrelevant commands from completion results.
|
irrelevant commands from completion results.
|
||||||
|
|
||||||
@kindex M-S-x
|
@kindex M-S-x
|
||||||
|
@kindex M-X
|
||||||
Conversely, Emacs can exclude all commands except those that are
|
Conversely, Emacs can exclude all commands except those that are
|
||||||
particularly relevant to the current buffer. The @kbd{M-S-x} (that's
|
particularly relevant to the current buffer. The @kbd{M-S-x} (that's
|
||||||
``meta shift x'') command works just like @kbd{M-x}, but instead of
|
``meta shift x'') command works just like @kbd{M-x}, but instead of
|
||||||
|
|
|
@ -630,17 +630,26 @@ any modes that are derived from @code{dired-mode}). Any number of
|
||||||
modes can be added to the @code{interactive} form.
|
modes can be added to the @code{interactive} form.
|
||||||
|
|
||||||
@vindex read-extended-command-predicate
|
@vindex read-extended-command-predicate
|
||||||
Specifying modes may affect completion in @kbd{M-x}, depending on the
|
Specifying modes affects command completion in @kbd{M-S-x}
|
||||||
|
(@code{execute-extended-command-for-buffer}, @pxref{Interactive
|
||||||
|
Call}). It may also affect completion in @kbd{M-x}, depending on the
|
||||||
value of @code{read-extended-command-predicate}.
|
value of @code{read-extended-command-predicate}.
|
||||||
|
|
||||||
For instance, when using the
|
For instance, when using the
|
||||||
@code{command-completion-default-include-p} predicate, @kbd{M-x} won't
|
@code{command-completion-default-include-p} predicate as the value of
|
||||||
list commands that have been marked as being applicable to a specific
|
@code{read-extended-command-predicate}, @kbd{M-x} won't list commands
|
||||||
mode (unless you are in a buffer that uses that mode, of course).
|
that have been marked as being applicable to a specific mode (unless
|
||||||
This goes for both major and minor modes.
|
you are in a buffer that uses that mode, of course). This goes for
|
||||||
|
both major and minor modes. (By contrast, @kbd{M-S-x} always omits
|
||||||
|
inapplicable commands from the completion candidates.)
|
||||||
|
|
||||||
Marking commands this way will also make @kbd{C-h m} list these
|
By default, @code{read-extended-command-predicate} is @code{nil}, and
|
||||||
commands (if they aren't bound to any keys).
|
completion in @kbd{M-x} lists all the commands that match what the
|
||||||
|
user has typed, whether those commands are or aren't marked as
|
||||||
|
applicable to the current buffer's mode.
|
||||||
|
|
||||||
|
Marking commands to be applicable to a mode will also make @kbd{C-h m}
|
||||||
|
list these commands (if they aren't bound to any keys).
|
||||||
|
|
||||||
If using this extended @code{interactive} form isn't convenient
|
If using this extended @code{interactive} form isn't convenient
|
||||||
(because the code is supposed to work in older versions of Emacs that
|
(because the code is supposed to work in older versions of Emacs that
|
||||||
|
@ -857,13 +866,16 @@ non-@code{nil} if the command is to be included when completing in
|
||||||
that buffer.
|
that buffer.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
@kindex @kbd{M-X}
|
||||||
|
@kindex @kbd{M-S-x}
|
||||||
@deffn Command execute-extended-command-for-buffer prefix-argument
|
@deffn Command execute-extended-command-for-buffer prefix-argument
|
||||||
This is like @code{execute-extended-command}, but limits the commands
|
This is like @code{execute-extended-command}, but limits the commands
|
||||||
offered for completion to those commands that are of particular
|
offered for completion to those commands that are of particular
|
||||||
relevance to the current major mode (and enabled minor modes). This
|
relevance to the current major mode (and enabled minor modes). This
|
||||||
includes commands that are tagged with the modes (@pxref{Using
|
includes commands that are tagged with the modes (@pxref{Using
|
||||||
Interactive}), and also commands that are bound to locally active
|
Interactive}), and also commands that are bound to locally active
|
||||||
keymaps.
|
keymaps. This command is the normal definition of @kbd{M-S-x}
|
||||||
|
(that's ``meta shift x'').
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@node Distinguish Interactive
|
@node Distinguish Interactive
|
||||||
|
|
25
etc/NEWS
25
etc/NEWS
|
@ -3730,15 +3730,28 @@ commands as being applicable for modes derived from 'dired-mode',
|
||||||
or if the mode is a minor mode, when the current buffer has that
|
or if the mode is a minor mode, when the current buffer has that
|
||||||
minor mode activated. Note that using this form will create byte code
|
minor mode activated. Note that using this form will create byte code
|
||||||
that is not compatible with byte code in previous Emacs versions.
|
that is not compatible with byte code in previous Emacs versions.
|
||||||
|
Also note that by default these annotations have no effect, unless the
|
||||||
|
new option 'read-extended-command-predicate' option is customized to call
|
||||||
|
'command-completion-default-include-p' or a similar function.
|
||||||
|
|
||||||
+++
|
+++
|
||||||
** New forms to declare how completion should happen has been added.
|
** New 'declare' forms to control completion of commands in 'M-x'.
|
||||||
'(declare (completion PREDICATE))' can be used as a general predicate
|
'(declare (completion PREDICATE))' can be used as a general predicate
|
||||||
to say whether the command should be present when completing with
|
to say whether the command should be considered a completion candidate
|
||||||
'M-x TAB'. '(declare (modes MODE...))' can be used as a short-hand
|
when completing with 'M-x TAB'.
|
||||||
way of saying that the command should be present when completing from
|
|
||||||
buffers in major modes derived from MODE..., or, if it's a minor mode,
|
'(declare (modes MODE...))' can be used as a short-hand way of saying
|
||||||
when that minor mode is enabled in the current buffer.
|
that the command should be considered a completion candidate when
|
||||||
|
completing on commands from buffers in major modes derived from
|
||||||
|
MODE..., or, if it's a minor mode, when that minor mode is enabled in
|
||||||
|
the current buffer.
|
||||||
|
|
||||||
|
Note that these forms will only have their effect if the
|
||||||
|
'read-extended-command-predicate' option is customized to call
|
||||||
|
'command-completion-default-include-p' or a similar function. The
|
||||||
|
default value of 'read-extended-command-predicate' is nil, which means
|
||||||
|
no commands that match what you have typed are excluded from being
|
||||||
|
completion candidates.
|
||||||
|
|
||||||
+++
|
+++
|
||||||
** 'define-minor-mode' now takes an ':interactive' argument.
|
** 'define-minor-mode' now takes an ':interactive' argument.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue