From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.help Subject: Re: Making a function than can only be used interactively Date: Mon, 04 Jul 2022 15:40:13 -0400 Message-ID: References: <87pmiljgah.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="1522"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Cc: Tassilo Horn , help-gnu-emacs@gnu.org To: carlmarcos@tutanota.com Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Mon Jul 04 21:41:31 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 1o8Rwo-0000BA-EC for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 04 Jul 2022 21:41:30 +0200 Original-Received: from localhost ([::1]:41364 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o8Rwm-0007y2-VH for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 04 Jul 2022 15:41:28 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:43790) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o8Rvw-0007v9-05 for help-gnu-emacs@gnu.org; Mon, 04 Jul 2022 15:40:38 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:20619) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o8Rvj-00072j-Lo; Mon, 04 Jul 2022 15:40:32 -0400 Original-Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id ED6E580722; Mon, 4 Jul 2022 15:40:16 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 959408054F; Mon, 4 Jul 2022 15:40:15 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1656963615; bh=I2qdkxakTmFfKlADXCBchYvCvUsiHq2Pw4Bd0KwEQjE=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=NSks62/vlOsB6qF6IJUxxcxs5SXUBhu/vQWeEEpzDiYect5sTWIh241mS33Tz5cje CBxm4i7CMnLaL6MldkvjboUg7IO9161NT3nC+xRwOXUcbQ8+tB3OWs3H4777zRRVQx CUCsLDNyGqZREXC9Cwx+GGJm4JRJbJhW7hlIK5Bs9KSh6NaBMao0VJ4L/qCu5tOSuZ 6itJwBIlvXki+M0r7bfHMSghSazuinOgSH834dEKOO3f24RqbKNadOmoSWwIMmxCbP CIuw2i8ulsXIXSuateY4qwFb8nNgQ/1bSO3E8MXan05W4QBGxc6iTPnBx4A9M7TT6l YD5bRvnA/jk4Q== Original-Received: from alfajor (unknown [45.72.196.165]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 2A6051204A2; Mon, 4 Jul 2022 15:40:15 -0400 (EDT) In-Reply-To: (carlmarcos@tutanota.com's message of "Mon, 4 Jul 2022 21:17:19 +0200 (CEST)") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham 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:138293 Archived-At: > Only after byte-compile of a file?=A0 > 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"? 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