From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.devel Subject: Re: "whether the global keymap C-x 4 will be replaced by a command," Date: Sun, 19 Jul 2020 02:21:27 +0300 Organization: LINKOV.NET Message-ID: <874kq41kaw.fsf@mail.linkov.net> References: <83ft9woo68.fsf@gnu.org> <87wo377wxp.fsf_-_@mail.linkov.net> <87wo353f77.fsf@mail.linkov.net> <87o8ofoy9o.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="34103"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu) Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org To: Richard Stallman Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Jul 19 01:26:19 2020 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 1jwwDj-0008n2-KG for ged-emacs-devel@m.gmane-mx.org; Sun, 19 Jul 2020 01:26:19 +0200 Original-Received: from localhost ([::1]:57060 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jwwDi-0002bH-M8 for ged-emacs-devel@m.gmane-mx.org; Sat, 18 Jul 2020 19:26:18 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58008) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jwwD7-00029x-2F for emacs-devel@gnu.org; Sat, 18 Jul 2020 19:25:41 -0400 Original-Received: from relay3-d.mail.gandi.net ([217.70.183.195]:54933) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jwwD5-0003p0-2e; Sat, 18 Jul 2020 19:25:40 -0400 X-Originating-IP: 91.129.108.250 Original-Received: from mail.gandi.net (m91-129-108-250.cust.tele2.ee [91.129.108.250]) (Authenticated sender: juri@linkov.net) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 3ACFE60003; Sat, 18 Jul 2020 23:25:33 +0000 (UTC) In-Reply-To: (Richard Stallman's message of "Fri, 17 Jul 2020 21:54:07 -0400") Received-SPF: pass client-ip=217.70.183.195; envelope-from=juri@linkov.net; helo=relay3-d.mail.gandi.net X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/18 19:25:36 X-ACL-Warn: Detected OS = Linux 3.11 and newer X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, 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:253085 Archived-At: > So I think there needs to be a exception list, a way of defining a few > key sequences starting with C-x 4 so that they depart from the usual > rule and maintain backwards compatibility instead. I propose the following design: 1. keep the existing 'C-x 4' bindings and other-window commands unchanged to maintain backwards compatibility; 2. add a catch-all fallback to ctl-x-4-map and bind it to the command invoked when an unbound key is typed after 'C-x 4'. There are 2 possibilities what to do with an unbound key in this command: 2.1. define a new keymap with mappings from such unbound keys to commands. For example, using project-prefix-map where "f" is bound to 'project-find-file' and while project-prefix-map itself is bound to "p" would enable such key sequences 'C-x 4 p f' to find a project file in another window. There is no need to add all -other-window variants in such additional keymap, it should handle the existing no-window commands, and display their buffers in another window. 2.2. another possibility is when the above keymap doesn't match an unbound key then run its global keybinding. For example, typing 'C-x 4 C-h i' will display the Info manual in another window. Now I tried to implement this, but the problem is that the fallback '[remap t]' doesn't work, for example in: (define-key ctl-x-4-map [remap t] 'other-window-prefix) it has no effect. Then I discovered this explanation in (info "(elisp) Remapping Commands"): Note that remapping only takes place through active keymaps; for example, putting a remapping in a prefix keymap like 'ctl-x-map' typically has no effect, as such keymaps are not themselves active. So it seems remapping in ctl-x-4-map has no effect.