[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Making a function than can only be used interactively
From: |
Stefan Monnier |
Subject: |
Re: Making a function than can only be used interactively |
Date: |
Sun, 03 Jul 2022 16:14:01 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
> 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).
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
- Making a function than can only be used interactively, carlmarcos, 2022/07/03
- Re: Making a function than can only be used interactively, carlmarcos, 2022/07/03
- Re: Making a function than can only be used interactively, Stefan Monnier, 2022/07/03
- Re: Making a function than can only be used interactively, carlmarcos, 2022/07/03
- Re: Making a function than can only be used interactively, Stefan Monnier, 2022/07/03
- Message not available
- Re: Making a function than can only be used interactively, carlmarcos, 2022/07/04
- Re: Making a function than can only be used interactively, Tassilo Horn, 2022/07/04
- Re: Making a function than can only be used interactively, Christopher Dimech, 2022/07/04