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 16:45:21 -0400 Message-ID: References: <87pmiljgah.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25749"; 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 22:46:10 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 1o8SxN-0006WL-Pd for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 04 Jul 2022 22:46:09 +0200 Original-Received: from localhost ([::1]:49952 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o8SxM-0004Cl-Kf for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 04 Jul 2022 16:46:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52978) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o8Swm-0004CC-Hg for help-gnu-emacs@gnu.org; Mon, 04 Jul 2022 16:45:32 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:39552) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o8Swj-0007cL-M3; Mon, 04 Jul 2022 16:45:31 -0400 Original-Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 0B40180722; Mon, 4 Jul 2022 16:45:26 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 14CE58054F; Mon, 4 Jul 2022 16:45:24 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1656967524; bh=DVwIVdlZn/EHBUJGW527qUwopwxlTX87n4EkIqoCa5s=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=JlPztxez2BhjHYYrW6LSkPvbaGXc5r6gU6IAppP+WLhHUEeUQfkZ2rKxKRniczp8i u8CZkaxnkk3v1ypaNu9bO5pC29cQ7u1pawW427lq5NQ//PYM9h3M4BOCW4Vve6Hres xzQPRm8aZnoL5t5t1LD0fcyB/Qxf5u/EhCrz+CGWtbuFxc1M5q35i6kwxcphEIa9WL WtNG1uCD8oDqSp4aqZiLKWseNaXro8joKV4zpe+QOpAvh9V9OZsJc0fperr56DA0Il FVDfKg55wI5kF3wHoZ/cXeoHmZJk4ozNnErT5rtrWU0RuGQZiYr2iEPlaLKxTFnILY EsG7rXMjx18iw== Original-Received: from alfajor (unknown [45.72.196.165]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id D2E8C120176; Mon, 4 Jul 2022 16:45:23 -0400 (EDT) In-Reply-To: (carlmarcos@tutanota.com's message of "Mon, 4 Jul 2022 21:50:15 +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_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-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:138297 Archived-At: >> 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. A common enough case, which you can do just fine without having to prevent non-interactive calls to the interactive wrapper. > Technically, you can use `completing-read` and `read-from-minibuffer` if you'd also > like to set values interactively, while calling the function non-interactively. You mean you can turn (defun foo (a b c) (interactive ...) ...) into (defun foo () (interactive) (let ((a ...) (b ...) (c ...)) ...)) Indeed. It's usually discouraged because it's incompatible with non-interactive uses of the function, but in the case under discussion you don't care about that because you already have another function to use for non-interactive calls. > I am not sure if in practice that is ever desired. It's done occasionally, typically in cases where it's difficult to cleanly separate the part of the code that prompts the user from the part that actually performs the desired operation. Stefan