From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.help Subject: no difference between interactive and "from Lisp" (was: Re: Making a function than can only be used interactively) Date: Wed, 06 Jul 2022 01:30:27 +0200 Message-ID: <87edyzkui4.fsf_-_@dataswamp.org> References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="40589"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:Y1Nbu2rXvca9TAeuHA+i75wGuRA= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Wed Jul 06 01:31:33 2022 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o8s0w-000AKd-Ux for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 06 Jul 2022 01:31:30 +0200 Original-Received: from localhost ([::1]:46694 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o8s0v-00088E-B7 for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 05 Jul 2022 19:31:29 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:32816) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o8s08-00086i-HC for help-gnu-emacs@gnu.org; Tue, 05 Jul 2022 19:30:40 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:44928) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o8s06-0007N9-1a for help-gnu-emacs@gnu.org; Tue, 05 Jul 2022 19:30:40 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1o8s03-0009LG-Ex for help-gnu-emacs@gnu.org; Wed, 06 Jul 2022 01:30:35 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: help-gnu-emacs@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:138322 Archived-At: Stefan Monnier via Users list for the GNU Emacs text editor wrote: >> Thought that (declare (interactive-only )) specifies >> to work only interactively. Thus, what is the >> "replacement" about? > > No, the function that's declared to be `interactive-only` is > the function in which you place this `declare`. The is > used in the warning's text to say something like " > is for interactive only; use instead". I think in Emacs there should be no difference between interactive and non-interactive functions. When it says in the help or the byte-compiler says "do this instead" (or what it says, exactly) that I think are the situations that should be pruned. OK, I found an example. So ... for example This function [`beginning-of-buffer'] is for interactive use only; in Lisp code use `(goto-char (point-min))' instead. Probably introduced at or before Emacs version 22.1. That's because `beginning-of-buffer' is in Elisp and `goto-char' is in C, right? Should be ways around it that are better, why not make a C function that is called 'beginning-of-buffer' (i.e., the same) that does (goto-char (point-min)) and only that, if one wants the extra material in the current/existing `beginning-of-buffer' that would be called something else and that would be in Elisp. So the common case would be optimized and that would be enforced with no difference for interactive and non-interactive use. And that should happen for many (all?) such cases and Elisp should very seldom occur in the help since it should be pretty obvious what the stuff does, and if anyone wants to use it, be our guest in anyway s/he can think of using it. It shouldn't matter. OK, I'll stop :) You understood what I meant several paragraphs ago ... *sigh* Here is the Elisp that produces that message BTW: (declare (interactive-only "use `(goto-char (point-min))' instead.")) -- underground experts united https://dataswamp.org/~incal