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: Round-tripping key definitions Date: Mon, 15 Nov 2021 16:10:10 -0500 Message-ID: References: <875yswtzxh.fsf@gnus.org> <87o86ohzyv.fsf@gnus.org> <87v90u4nsn.fsf@gnus.org> <874k8e4lkn.fsf@gnus.org> <871r3i2clf.fsf@gnus.org> <87y25pzxgw.fsf@gnus.org> <87o86lzv6a.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="20020"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Phil Sainty , Emacs developers To: Lars Ingebrigtsen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Nov 15 22:11:02 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 1mmjFl-0004w7-Ba for ged-emacs-devel@m.gmane-mx.org; Mon, 15 Nov 2021 22:11:01 +0100 Original-Received: from localhost ([::1]:45456 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mmjFi-0003VS-T9 for ged-emacs-devel@m.gmane-mx.org; Mon, 15 Nov 2021 16:10:59 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:37478) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mmjF5-0002qN-R5 for emacs-devel@gnu.org; Mon, 15 Nov 2021 16:10:19 -0500 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:26705) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mmjF2-0008TU-FF for emacs-devel@gnu.org; Mon, 15 Nov 2021 16:10:18 -0500 Original-Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 84A7F80570; Mon, 15 Nov 2021 16:10:13 -0500 (EST) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 7F614802FF; Mon, 15 Nov 2021 16:10:11 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1637010611; bh=aixebfvQHIRo/62IlA6JRIz07cS2X4XvUXBUWE8QnAw=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=Kcmbb61D9bZ+VmrVjOgLHXzixmr66shJ7MwxWByIZASh9sLvX1/RyYbQNohXiCd/V qIPEegd6FY1VO5J5Osf+Ip5lZ5GiT9upR1XtyFzfMo77cHEwhMIG1F5wDJrhRp40fW vr2qajdYWO7/OHNTor9eis+VkwPMi135GJIAMp4lwsZORzJ+ojUTPtrE/DsGPQBas2 ScKnC2YxbI26sCDYzottrdgueWnqW4EhtJjLK1CC09haKrK1t6sPIalcZW4MK7R00b UKSy96g9VFJXnT7+BRUuYVTBkq8W3IxJVjVLLYyfFrf5209N+4uk8mYoV/WXybnWFT 2eClRR1lspzYg== Original-Received: from ceviche (modemcable179.53-19-135.mc.videotron.ca [135.19.53.179]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 4110A1202F4; Mon, 15 Nov 2021 16:10:11 -0500 (EST) In-Reply-To: <87o86lzv6a.fsf@gnus.org> (Lars Ingebrigtsen's message of "Mon, 15 Nov 2021 09:21:01 +0100") 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.29 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:279517 Archived-At: > -(define-key global-map "\t" 'indent-for-tab-command) > +(define-key global-map [TAB] 'indent-for-tab-command) > +(define-key global-map [?\C-i] nil) > +(define-key global-map [tab] nil) > +(define-key function-key-map [?\C-i] [TAB]) > +(define-key function-key-map [tab] [TAB]) Sadly, I think this will introduce a fair bit of trouble because code which currently does (define-key map "\t" ...) expects this binding to apply to both `tab` and tty's TAB key. We could try and fix it by having `tab` first fallback to `?\t` and only then to `TAB`, but that currently can't be done with `function-key-map` because `function-key-map` is not applied to its output. We could do it via ad-hoc code (like we currently have for the `drag-mouse-1` fallback to `mouse-1`) or we could introduce a new keymap like `function-key-map` but that's applied repeatedly until it doesn't apply any more (or until a binding is found). Or maybe we could do (define-key function-key-map [tab] #'some-new-tab-remap) and then make sure `some-new-tab-remap` can get enough info to figure out whether this `tab` should be remapped to `TAB` or to `?\C-i`. I remember wanting such a repeatedly applied keymap a few times in the past, and similarly getting enough info for a function to be able to decide whether to do would be useful in other cases as well. Stefan