From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.help Subject: Re: Keybinding that cycles call to a function Date: Fri, 27 Nov 2020 21:47:48 +0100 Message-ID: <87h7pa5xxn.fsf@web.de> 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="32085"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:5lf+HLiIXNPifyMhuvHLkhACT08= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Fri Nov 27 21:48:21 2020 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 1kikfF-0008Et-Ly for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 27 Nov 2020 21:48:21 +0100 Original-Received: from localhost ([::1]:47518 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kikfE-0003iR-Nl for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 27 Nov 2020 15:48:20 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:44890) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kikeu-0003iH-07 for help-gnu-emacs@gnu.org; Fri, 27 Nov 2020 15:48:00 -0500 Original-Received: from static.214.254.202.116.clients.your-server.de ([116.202.254.214]:48692 helo=ciao.gmane.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kikes-00035w-Kl for help-gnu-emacs@gnu.org; Fri, 27 Nov 2020 15:47:59 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1kikeo-0007iN-3b for help-gnu-emacs@gnu.org; Fri, 27 Nov 2020 21:47:54 +0100 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: -13 X-Spam_score: -1.4 X-Spam_bar: - X-Spam_report: (-1.4 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, 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.23 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:125690 Archived-At: daniela-spit@gmx.it writes: > If I have a function that takes a number. How can a make a > keybinding that cycles through the values n = 0, 1, 2? Evaluating (eq this-command last-command) will tell you if you have a repeated call. Then you will have to check for the current "state". If there is no way to find out, you will have to "remember" the last state in some way. There are several ways to do this. Simplest way (IMO): use a (special, i.e. defvar'ed) variable. There are also solutions for command repeating that check the last invocation time, and only repeated invocations in a time less than some time limit it count as repetition (similar to double mouse clicks). Michael.