[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Making a function than can only be used interactively

From: carlmarcos
Subject: Re: Making a function than can only be used interactively
Date: Sun, 3 Jul 2022 22:27:25 +0200 (CEST)

Jul 3, 2022, 20:14 by

>> I do not want people to use the function non-interactively.
> An interactive call is fundamentally a combination of "run the
> interactive spec to get the args, and then call the function with those
> args".  So, in a sense you can't avoid it.
> But you can discourage non-interactive calls in various ways, depending
> on how important you think it is.  The most standard way is to use
>  (declare (interactive-only <foo>))
> so that the compiler will emit a warning when it sees a non-interactive
> call to that function (<foo> is the replacement you recommend for
> non-interactive calls).
What I have done is make a non-interactive function, followed by an interactive 
Some experience showed me that handling everything in a single function can get 

> A more "forceful" way is to wrap your interactive function inside
> a trivial keyboard macro:
>  (defalias 'my-command
>  (vector (lambda (...)
>  (interactive ..)
>  ...)))
> this way `my-command` is a valid command but it's not a valid function.
> I'd not recommend such a measure, tho.
>  Stefan

reply via email to

[Prev in Thread] Current Thread [Next in Thread]