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 17:45:11 -0400 Message-ID: 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="22977"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Cc: tsdh@gnu.org, help-gnu-emacs@gnu.org To: Christopher Dimech Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Mon Jul 04 23:46:08 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 1o8TtP-0005mu-UX for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 04 Jul 2022 23:46:08 +0200 Original-Received: from localhost ([::1]:35782 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o8TtO-00021E-Ek for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 04 Jul 2022 17:46:06 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33422) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o8Tsd-000211-SQ for help-gnu-emacs@gnu.org; Mon, 04 Jul 2022 17:45:20 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:2443) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o8Tsb-0007Zk-De; Mon, 04 Jul 2022 17:45:18 -0400 Original-Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D53F3100142; Mon, 4 Jul 2022 17:45:14 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 7E1DF10008C; Mon, 4 Jul 2022 17:45:13 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1656971113; bh=swOJui66xLcALtSbM4acBiOutGVyz6x81m4S+sE3ZgM=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=fAs8/+Vfry7Kh13b4X1ybBdV2Ib0Quqco30aph+weBBPOFNTGNgIDf3Bb7n6RJ5lB WOd7cBsgcH/W53dgi8bLFWjpvtIf7baeNZpiIEm4QZgWeBGbaCDUkxDQhQ1Vrm+QTB zzrZWoDFX2ZRH/ypPr38jnZYg3gA/EpYlZAEk7Rvdd8I0pxSXW9R3xgYodlWxVQ1E8 PBVZIxvk8xFwFFXS8bDtevnzhhxw/qUet5hWExeqrmozdveEnATT3UhJnjqwjRQe1g bH5SGcCAjUJxUyPlt57uoIxwNnCOv7x9KwioBurOiN0EL8DWz6pvdbEQZ+Ru54eVk4 s22P9HhU49jQA== Original-Received: from alfajor (unknown [45.72.196.165]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 32291120416; Mon, 4 Jul 2022 17:45:13 -0400 (EDT) In-Reply-To: (Christopher Dimech's message of "Mon, 4 Jul 2022 23:07:28 +0200") 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:138303 Archived-At: >> 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. > It is indeed incompatible with non-interactive use. A thing that can be done > is fire the warning even when Lisp Code in not transformed into byte-code. You could emit the warning/error during macro-expansion, indeed. Something like: (defun foo (a b c) (interactive ...) (declare (compiler-macro (lambda (_) (error "Called non-interactively")))) ...) Not sure what's the benefit, still. > Although byte compilation in recommended, I wonder how often people actually > byte-compile every file. `flymake-mode` will run the compiler for you to get those warnings right while you're writing the code. If people don't see the warning because they don't compile their files, then let's fix it by trying to convince them to compile their files, which will come with a lot of other benefits. > Byte compiling will often tell you errors or warning in your elisp > code that you normally wouldn't know, but I think that running an > interactive-only function non-interactively is serious enough to > insert the warning in the warnings buffer anyway. Usually calling an interactive-only function non-interactively is not serious *at all* and very often it's The Right Thing to do. Stefan