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.devel Subject: Re: master 12409c9: New transient mode 'repeat-mode' to allow shorter key sequences (bug#46515) Date: Thu, 18 Feb 2021 10:32:23 -0500 Message-ID: References: <20210217180506.28704.14280@vcs0.savannah.gnu.org> <20210217180507.C061220DFB@vcs0.savannah.gnu.org> <87lfbln1w8.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="343"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: emacs-devel@gnu.org To: Juri Linkov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Feb 18 16:34:07 2021 Return-path: Envelope-to: ged-emacs-devel@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 1lClJf-000AXU-64 for ged-emacs-devel@m.gmane-mx.org; Thu, 18 Feb 2021 16:34:07 +0100 Original-Received: from localhost ([::1]:34016 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lClJe-00069z-4a for ged-emacs-devel@m.gmane-mx.org; Thu, 18 Feb 2021 10:34:06 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:42954) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lClI7-0005f5-Vx for emacs-devel@gnu.org; Thu, 18 Feb 2021 10:32:32 -0500 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:65112) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lClI5-0006fc-NJ for emacs-devel@gnu.org; Thu, 18 Feb 2021 10:32:31 -0500 Original-Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id E913A80801; Thu, 18 Feb 2021 10:32:25 -0500 (EST) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 2AD7D80052; Thu, 18 Feb 2021 10:32:24 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1613662344; bh=kHYJH/X0IhplKheCYiQri0TPhLRq+IX0zGNQd8lzf5I=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=Ti8S5Ht9Q+RtVO1d+ydSEKbUP6NzMP+WAHxkN9QBICQXa14/3Q0m9TttbTUGlGZA8 8mFLefrYQjlw+8e7aWuJGe7rs11/Htep7tlt8tOOTNpQcrzyi8bhkID5eT72GR985X YqkC+UPFMz466iAnKXAuO9BboRXQstwP8MuN4dF7VUhya/+Dn9CLbhj4cmTsDcMP6w fmVAFgD2IO14pnX7p/XWtFTQERTynap8E2ZVcj733mhyPwpJ1Ue+F0qnWdxhaXt8CC uevkNcU/KHyzSfT3NpIVdqfmXTucW6AQMn9/1+p6OMHzqtwW7/pY+Dxh4y0/3LHj1c 8uQI6cPMPKY1Q== Original-Received: from alfajor (unknown [216.154.41.47]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id ADC8E120294; Thu, 18 Feb 2021 10:32:23 -0500 (EST) In-Reply-To: <87lfbln1w8.fsf@mail.linkov.net> (Juri Linkov's message of "Thu, 18 Feb 2021 11:37:19 +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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:265153 Archived-At: >>> +(defvar next-error-repeat-map >>> + (let ((map (make-sparse-keymap))) >>> + (define-key map "n" 'next-error) >>> + (define-key map "\M-n" 'next-error) >>> + (define-key map "p" 'previous-error) >>> + (define-key map "\M-p" 'previous-error) >>> + map) >>> + "Keymap to repeat next-error key sequences. Used in `repeat-mode'.") >>> +(put 'next-error 'repeat-map 'next-error-repeat-map) >>> +(put 'previous-error 'repeat-map 'next-error-repeat-map) >> >> Could we avoid this duplication between the map and the >> `repeat-map` property? >> >>> + (set-transient-map map))))))) >> >> For example passing a second argument t to `set-transient-map` makes >> `set-transient-map` look to see if the key just typed was found in the >> map and if so keep the transient alive, which seems to [after an >> admittedly cursory check of the code] play the same role as what your >> `repeat-map` property does, but without the duplication. > > The current design relies on post-command-hook that runs after every command. > Using the second argument KEEP-PRED of set-transient-map will add duplication: > the same map will be set by both post-command-hook and KEEP-PRED. My point was not to say "use `keep-pred`", but to point out that `keep-pred` found a way to solve the same problem without the duplication. [ I'd be nice to be able to use `keep-pred` directly since it would likely make the code simpler, but it may well be that this is incompatible with the current code's design or with its intended behavior, or that it would require further changes that would make the overall code more complex. ] > So currently there is no duplication. There is in the above code snippet: the `put` statements are redundant since the same info is fundamentally already available from `next-error-repeat-map`. Stefan