[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: Mon, 4 Jul 2022 21:50:15 +0200 (CEST)

Jul 4, 2022, 19:40 by

>> Only after byte-compile of a file? 
>> So there is no way to actually make a function interactive only?
> Please define what it is you mean by "make a function interactive only".
> Do you mean that it should be illegal to write code that calls the
> function directly, so whoever writes it can be sued?
> Would it be acceptable for someone to just think about writing such code
> as long as they don't actually write it?
> More seriously, what are you trying to gain by "mak[ing] a function
> interactive only"?  
For instance, writing an interactive wrapper function calling a non-interactive
mother function.

Technically, you can use `completing-read` and `read-from-minibuffer` if you'd 
 like to set values interactively, while calling the function 
non-interactively.  One can
 achieve more or less the same effect with setting values of local variables 
 the interactive expression.  In this scenario, running the function 
non-interactively would
still force interactive input from the minibuffer.

I am not sure if in practice that is ever desired.

> Usually, the reason why one might want to make
> a function "interactive only" is that code that calls this function is
> probably incorrect and would likely be served better by some
> other function.  So the purpose is to help people write better code.
> For this reason the declaration only has an effect in terms of
> byte-compiler warnings: those who don't bother to byte-compile their
> code presumably don't care about the quality of their code anyway.
> Emacs doesn't offer any pre-defined way to really enforce that
> a function is only used interactively, and in large parts this is
> because, as a matter of design principle, Emacs makes no effort to stop
> people from shooting themselves in the foot (instead, it tries to make
> it easier for people not to shoot themselves in the foot).
>  Stefan

reply via email to

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