From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.devel Subject: Re: Suggested experimental test Date: Sat, 27 Mar 2021 01:34:52 +0200 Message-ID: <45322b47-e868-d242-0972-8d517e2dcfd7@yandex.ru> References: <831ba60af0cbfdd95686@heytings.org> <87mtuxj8ue.fsf@gnus.org> <9088e12cb3de3d30abf1@heytings.org> <8735wnjsum.fsf@gnus.org> <83sg4n9jei.fsf@gnu.org> <87y2efhx3e.fsf@gnus.org> <838s6f9g5d.fsf@gnu.org> <87y2efgg3w.fsf@gnus.org> <878s6fgdzu.fsf@gnus.org> <19c1ec9e-a97f-a8ab-b966-edadbc299c39@yandex.ru> <7226c389-ebd7-29fd-23b8-c2dbfbf0c1a0@yandex.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11563"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 Cc: Lars Ingebrigtsen , Gregory Heytings , Eli Zaretskii , Stefan Kangas , Emacs developers To: Yuri Khan Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Mar 27 00:36: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 1lPvzm-0002qp-7P for ged-emacs-devel@m.gmane-mx.org; Sat, 27 Mar 2021 00:36:02 +0100 Original-Received: from localhost ([::1]:36964 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPvzl-0002Cq-7v for ged-emacs-devel@m.gmane-mx.org; Fri, 26 Mar 2021 19:36:01 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:44380) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPvyk-0001Rg-Ue for emacs-devel@gnu.org; Fri, 26 Mar 2021 19:34:58 -0400 Original-Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:34737) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPvyj-0005Ef-09; Fri, 26 Mar 2021 19:34:58 -0400 Original-Received: by mail-wm1-x32b.google.com with SMTP id n11-20020a05600c4f8bb029010e5cf86347so6589863wmq.1; Fri, 26 Mar 2021 16:34:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=46Bxz7Vrco8jTc0DK4TPnbAxr4qm+AJTBhQ0MjcE5Ys=; b=u1J2QoGqTs1r45chgjsKN0AtAAwyFNZkDohAt3zhSJzOj1eJDog5xBRPXy+kkftW7W zNVbX+JfS39jP0N4KyYduBmjnM3BkurTyu2Koxw89pkj1VD7m9Tnplcu290hmEsmXca6 TSN5InZjXx56kJINteIcAdwy5pkaL+7gQojjhouoWJdxbVIHeZfJKxDNdHzwYlILafZ1 T5IJTcMlJwZ6fWjZ5grrMamO8mMwko9Clzh3l7egolcHUPRAxNp2Q1BLYlUXoVeWzC52 rcWnIHXn3cjT4nj86FgLN+kxzTRGVi5PmM+nzYCKOaFgJMjyn6m2zw8vtL0XdoCl6w1d veew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=46Bxz7Vrco8jTc0DK4TPnbAxr4qm+AJTBhQ0MjcE5Ys=; b=d+TzIWuP5zKJGJP+ayHA/6yKCMjjukzdCIs9V83a+VkgNRWQe3Jhj7YDT96THdGjyd VtLOQ/CUBiMd9wuFdTK8BoXwWx/Wm2yj935aSq3WQ0MYV96CWMOvHM8fKE7/BO1JKhBP VoBHsry2YI9k49jbgBA6uE/eCaYallsRznYLwSxGZxSq2+QxjgxYESPrsMbkqq2woQNJ gvvjYDyqDhgtdr0ZxpdDYfkc2Du4UKzo5IklVCdL17N7WGmFqhLnIAKLhJ14B7hOEuzK PTACVJYr0E8GHkGUWaAFFFAB2Mwx7PAas9rz61eK8a5ZdM3UdMO0M9HdFZYy7ucQtHxe bhow== X-Gm-Message-State: AOAM533UgkE8DTzV5Tpwv7kROKlMOGGAyayIo1g4nvBnvs1VmXATb06+ rtnSCOdPfhuhIWqv2D6k0LqOFVBxHKU= X-Google-Smtp-Source: ABdhPJx8Sk93cFoc3SzCiBPb8OQtjf5jrahI67vRf9kEQQnEbhqihpOXCqRdTysFH23VSlNFj/udVw== X-Received: by 2002:a7b:c1c4:: with SMTP id a4mr15216872wmj.122.1616801695128; Fri, 26 Mar 2021 16:34:55 -0700 (PDT) Original-Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id l1sm14445192wrv.87.2021.03.26.16.34.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 26 Mar 2021 16:34:54 -0700 (PDT) In-Reply-To: Content-Language: en-US Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=raaahh@gmail.com; helo=mail-wm1-x32b.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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:267091 Archived-At: On 25.03.2021 21:30, Yuri Khan wrote: > On Thu, 25 Mar 2021 at 20:20, Dmitry Gutov wrote: > >> But C-c doesn't have a dedicated keymap, so solving this seems like the >> first step. What could we do? >> >> (kbd (format "%s C-l" ctl-c-key-sequence) 'some-command) >> >> Or maybe create a bogus ctrl-c keymap and then make sure to refer to its >> binding with something like >> >> (kbd "[C-c] C-l" 'some-command) >> >> ...I'm not sure, ideas welcome. > > How about this: > > * Introduce a virtual key, let’s call it . Let’s > specifically *not* name it . > * Have all modes use that as the prefix key for mode-specific > commands, instead of C-c. > * In the default configuration, translate C-c to . > > Proof of concept: > > $ emacs -Q > > (define-key help-mode-map (kbd " ") > #'help-follow-symbol) > (define-key help-mode-map (kbd " C-b") #'help-go-back) > (define-key help-mode-map (kbd " C-f") #'help-go-forward) > (define-key key-translation-map (kbd "") (kbd "")) > ;; C-x C-e all of the above > > (define-key help-mode-map (kbd "C-c C-c") nil) > (define-key help-mode-map (kbd "C-c C-b") nil) > (define-key help-mode-map (kbd "C-c C-f") nil) > (define-key help-mode-map (kbd "C-c") nil) > ;; should be unneeded after all modes convert > > (global-set-key (kbd "C-c") #'copy-region-as-kill) > (global-set-key (kbd "C-v") #'cua-paste) > > m C-x o > ;; I’m now in a *Help* buffer listing currently enabled modes > > b > ;; I’m now in a *Help* buffer listing bindings > > C-b > ;; I’m back to modes > > C-f > ;; I’m back to bindings > > S- S- S- C-c > C-x o C-v > ;; I have a copy of a few lines from *Help* in my *scratch* This is a solid proposal. We can go with it, especially if we don't mind the key sequence ergonomics in keymaps, as well as backward incompatibility. Perhaps we could instead do something with key-translation-map (or one of its friends) that works on existing keymaps? The use of 'menu-item' allows us to filter based on whether the key is first in the sequence: (define-key key-translation-map (kbd "") (kbd "C-c")) (define-key key-translation-map (kbd "C-c") `(menu-item "" ,(kbd "") :filter my--head-of-sequence-p)) (global-set-key (kbd "") 'kill-ring-save) (defun my--head-of-sequence-p (cmd) (if (> (length (this-command-keys-vector)) 1) (kbd "C-c") cmd)) This seems backward-compatible enough, but the main downside is that Emacs now says 'C-c-' in the echo area when you hit . Which must be confusing to the main target audience.