Change how (declare (modes store the data

* lisp/emacs-lisp/byte-run.el (byte-run--set-modes): Change from
being a predicate to storing the modes.  This allows using the
modes for positive command discovery, too.
* src/data.c (Fcommand_modes): Look at the `command-modes' symbol
property, too.
This commit is contained in:
Lars Ingebrigtsen 2021-02-20 14:29:41 +01:00
parent 825aed11d2
commit 12578d6aca
2 changed files with 10 additions and 4 deletions

View file

@ -154,9 +154,7 @@ The return value of this function is not used."
(defalias 'byte-run--set-modes
#'(lambda (f _args &rest val)
(list 'function-put (list 'quote f)
''completion-predicate
`(lambda (_ b)
(command-completion-with-modes-p ',val b)))))
''command-modes (list 'quote val))))
;; Add any new entries to info node `(elisp)Declare Form'.
(defvar defun-declarations-alist

View file

@ -957,9 +957,17 @@ The value, if non-nil, is a list of mode name symbols. */)
if (NILP (fun))
return Qnil;
/* Use a `command-modes' property if present, analogous to the
function-documentation property. */
fun = command;
while (SYMBOLP (fun))
fun = Fsymbol_function (fun);
{
Lisp_Object modes = Fget (fun, Qcommand_modes);
if (!NILP (modes))
return modes;
else
fun = Fsymbol_function (fun);
}
if (COMPILEDP (fun))
{