summaryrefslogtreecommitdiff
path: root/src/emacs-module.c
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-02-14 13:21:24 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-02-14 13:21:24 +0100
commit58e0c8ee86e2c36245f1c5a1483f1c73600b4914 (patch)
tree6932d2522093fe640438a97f8595a39a0a07b24a /src/emacs-module.c
parent8d517daf770e8c6bd05e040b3bd3402626dbd9ef (diff)
downloademacs-58e0c8ee86e2c36245f1c5a1483f1c73600b4914.tar.gz
emacs-58e0c8ee86e2c36245f1c5a1483f1c73600b4914.tar.bz2
emacs-58e0c8ee86e2c36245f1c5a1483f1c73600b4914.zip
Extend the syntax of `interactive' to list applicable modes
* doc/lispref/commands.texi (Using Interactive): Document the extended `interactive' form. * doc/lispref/loading.texi (Autoload): Document list-of-modes form. * lisp/emacs-lisp/autoload.el (make-autoload): Pick the list of modes from `interactive' out of the functions. * lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Allow for the extended `interactive' form. * src/callint.c (Finteractive): Document the extended form. * src/data.c (Finteractive_form): Return the interactive form in the old format (even when there's an extended `interactive') to avoid having other parts of Emacs be aware of this. (Fcommand_modes): New defun. * src/emacs-module.c (GCALIGNED_STRUCT): Allow for modules to return command modes. * src/lisp.h: New function module_function_command_modes.
Diffstat (limited to 'src/emacs-module.c')
-rw-r--r--src/emacs-module.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/emacs-module.c b/src/emacs-module.c
index 894dffcf21e..f8fb54c0728 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -549,7 +549,7 @@ struct Lisp_Module_Function
union vectorlike_header header;
/* Fields traced by GC; these must come first. */
- Lisp_Object documentation, interactive_form;
+ Lisp_Object documentation, interactive_form, command_modes;
/* Fields ignored by GC. */
ptrdiff_t min_arity, max_arity;
@@ -646,6 +646,12 @@ module_function_interactive_form (const struct Lisp_Module_Function *fun)
return fun->interactive_form;
}
+Lisp_Object
+module_function_command_modes (const struct Lisp_Module_Function *fun)
+{
+ return fun->command_modes;
+}
+
static emacs_value
module_funcall (emacs_env *env, emacs_value func, ptrdiff_t nargs,
emacs_value *args)