Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
52b71f49
Commit
52b71f49
authored
Jul 25, 2007
by
Stefan Monnier
Browse files
(Fcommandp): Pay attention to the `interactive-form' property.
parent
c4f46926
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
13 deletions
+20
-13
src/eval.c
src/eval.c
+20
-13
No files found.
src/eval.c
View file @
52b71f49
...
...
@@ -2040,42 +2040,49 @@ then strings and vectors are not accepted. */)
{
register Lisp_Object fun;
register Lisp_Object funcar;
Lisp_Object if_prop = Qnil;
fun = function;
fun = indirect_function (fun);
if (EQ (fun, Qunbound))
fun = indirect_function (fun);
/* Check cycles. */
if (
NILP (fun) ||
EQ (fun, Qunbound))
return Qnil;
/* Check an `interactive-form' property if present, analogous to the
function-documentation property. */
fun = function;
while (SYMBOLP (fun))
{
Lisp_Object tmp = Fget (fun, intern ("interactive-form"));
if (!NILP (tmp))
if_prop = Qt;
fun = Fsymbol_function (fun);
}
/* Emacs primitives are interactive if their DEFUN specifies an
interactive spec. */
if (SUBRP (fun))
{
if (XSUBR (fun)->prompt)
return Qt;
else
return Qnil;
}
return XSUBR (fun)->prompt ? Qt : if_prop;
/* Bytecode objects are interactive if they are long enough to
have an element whose index is COMPILED_INTERACTIVE, which is
where the interactive spec is stored. */
else if (COMPILEDP (fun))
return ((ASIZE (fun) & PSEUDOVECTOR_SIZE_MASK) > COMPILED_INTERACTIVE
? Qt :
Qnil
);
? Qt :
if_prop
);
/* Strings and vectors are keyboard macros. */
if
(NILP (for_call_interactively) &&
(STRINGP (fun) || VECTORP (fun))
)
return
Qt
;
if (STRINGP (fun) || VECTORP (fun))
return
NILP (for_call_interactively) ? Qt : Qnil
;
/* Lists may represent commands. */
if (!CONSP (fun))
return Qnil;
funcar = XCAR (fun);
if (EQ (funcar, Qlambda))
return Fassq (Qinteractive, Fcdr (XCDR (fun)));
return
!NILP (
Fassq (Qinteractive, Fcdr (XCDR (fun)))
) ? Qt : if_prop
;
if (EQ (funcar, Qautoload))
return Fcar (Fcdr (Fcdr (XCDR (fun))));
return
!NILP (
Fcar (Fcdr (Fcdr (XCDR (fun))))
) ? Qt : if_prop
;
else
return Qnil;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment