]> git.eshelyaron.com Git - emacs.git/commit
New generic function `oclosure-interactive-form`
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 26 Apr 2022 14:36:52 +0000 (10:36 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 26 Apr 2022 14:36:52 +0000 (10:36 -0400)
commitbffc4cb39dc7b83fc4a1bffd23eeed2774b79444
tree103b22b517aafd70b16fe2d1dea06cb4673668f5
parent756b7cf5d9a817503437b3e8a9e8d912b7ee6c75
New generic function `oclosure-interactive-form`

It's used by `interactive-form` when it encounters an OClosure.
This lets one compute the `interactive-form` of OClosures
dynamically by adding appropriate methods.
This does not include support for `command-modes` for Oclosures.

* lisp/simple.el (oclosure-interactive-form): New generic function.

* src/data.c (Finteractive_form): Delegate to
`oclosure-interactive-form` if the arg is an OClosure.
(syms_of_data): New symbol `Qoclosure_interactive_form`.
* src/eval.c (Fcommandp): Delegate to `interactive-form` if the arg is
an OClosure.

* src/lisp.h (VALID_DOCSTRING_P): New function, extracted from
`store_function_docstring`.
* src/doc.c (store_function_docstring): Use it.

* lisp/kmacro.el (kmacro): Don't carry any interactive form.
(oclosure-interactive-form) <kmacro>: New method, instead.

* test/lisp/emacs-lisp/oclosure-tests.el (oclosure-interactive-form)
<oclosure-test>: New method.
(oclosure-test-interactive-form): New test.

* doc/lispref/commands.texi (Using Interactive):
Document `oclosure-interactive-form`.
doc/lispref/commands.texi
etc/NEWS
lisp/kmacro.el
lisp/simple.el
src/callint.c
src/data.c
src/doc.c
src/eval.c
src/lisp.h
test/lisp/emacs-lisp/oclosure-tests.el