From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: Make function callable from some specific major-mode Date: Wed, 19 Oct 2022 21:26:37 -0400 Message-ID: References: Reply-To: Stefan Monnier Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="9211"; 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:TnO7CvtnjBRbfPyV9npeq3rx+cw= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu Oct 20 03:29:54 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 1olKNe-0002FG-TY for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 20 Oct 2022 03:29:54 +0200 Original-Received: from localhost ([::1]:50710 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1olKNd-0008HT-HJ for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 19 Oct 2022 21:29:53 -0400 Original-Received: from [::1] (port=47424 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1olKL4-0006p2-5Q for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 19 Oct 2022 21:27:14 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:38036) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1olKKo-0006nQ-An for help-gnu-emacs@gnu.org; Wed, 19 Oct 2022 21:26:58 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:47640) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1olKKg-00049p-Eb for help-gnu-emacs@gnu.org; Wed, 19 Oct 2022 21:26:52 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1olKKY-0008se-Ow for help-gnu-emacs@gnu.org; Thu, 20 Oct 2022 03:26:42 +0200 X-Injected-Via-Gmane: http://gmane.org/ 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: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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:140169 Archived-At: Heime via Users list for the GNU Emacs text editor [2022-10-20 00:59:33] wrote: > How can I make a function callable only whilst in some specific major-mode? Usually: you don't (most of the time, it's a pointless effort: if the users go through the trouble to call your function, then better presume that they actually have a good reason to do so). If that answer doesn't work, then the second answer: you don't, and instead you test for a specific property on which your code depends (so it will still be useful in a buffer using another mode, as long as your code still makes sense there). If you're still not satisfied because you really want to prevent users from using your function even if it could be useful, then you test (derived-mode-p ') and signal an error if the test fails. Another way is to add (declare (modes )) to your function definition: this won't prevent the function from being used elsewhere, but it will tell `M-x` not to bother proposing this function if you're not in one of the listed modes. Stefan