From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: chad Newsgroups: gmane.emacs.devel Subject: Re: [External] : Re: POLL: make C-x o transient Date: Mon, 1 Feb 2021 11:50:15 -0800 Message-ID: References: <2EFBBE54-62F4-4373-82D6-DC8750B648BA@kuaishou.com> <87eei9xb5r.fsf@mail.linkov.net> <87sg6m5mjs.fsf@mail.linkov.net> <8735ykc37u.fsf@mail.linkov.net> <938445fec66b0cdb0c4e@heytings.org> <87y2gchcpm.fsf@posteo.net> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="00000000000050fbfd05ba4baad3" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="18853"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Alan Mackenzie , "Philip K." , Gregory Heytings , Drew Adams , EMACS development team To: Richard Stallman Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Feb 01 20:52:44 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 1l6fFc-0004oE-E0 for ged-emacs-devel@m.gmane-mx.org; Mon, 01 Feb 2021 20:52:44 +0100 Original-Received: from localhost ([::1]:38792 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l6fFb-0004Fn-FZ for ged-emacs-devel@m.gmane-mx.org; Mon, 01 Feb 2021 14:52:43 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52362) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l6fDV-00025V-OV for emacs-devel@gnu.org; Mon, 01 Feb 2021 14:50:34 -0500 Original-Received: from mail-yb1-xb2a.google.com ([2607:f8b0:4864:20::b2a]:38603) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l6fDR-0002hY-9O; Mon, 01 Feb 2021 14:50:33 -0500 Original-Received: by mail-yb1-xb2a.google.com with SMTP id i6so11698360ybq.5; Mon, 01 Feb 2021 11:50:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=x0WJJBzoxHay3ER3A0AEfhZC7OyInMdwUbgYA/+0ERw=; b=osc6vOlaiz6VOqgUp1Dc64l51zdS3HD8tbXW6lV3VgM8kzUtu8nGUUc3d639d2ICWj NrUn4b3YheZLUqY+LUXsTt9any2mEEHyVpIXBUHdW0+Ht3frYhl7DX8VoEjZQL3IdEj4 Y6vNv8BxsY7psi0DB4TWlgM4OPyfDdrmUpm3UzZnMz8SjtA9/Gff7ZwZjGnX6bNmMbdb cK4WRhGJvRRzVUWQLqRBDN0taO09gUrfs/ohcr2MK0u4YN4/DJ/86ycSTtqZpZpGKD+w tjH+QLuufxpTM0AyAEH/V1y2YaW28+eVBh+NPh0DSjqgqnAb6CHXjtgyH/XNLcgucMxB 1m2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=x0WJJBzoxHay3ER3A0AEfhZC7OyInMdwUbgYA/+0ERw=; b=PfAmPbQ0UML2DjO2j69tJ+Wd78bXpw82yTyPkHoqvdGoPc/Xv0jJIwtmj2zlzQ30f8 uqpNUV5LT6JLz6PzxQZjdY4VgWGf2epDDektxaKBYc9tCynX9s84457fYHE5cK2nPf2k w+ER/K2b8mrpMs98Y7cMBSIBJAXt797MZh+sZLOmClcFRO75lxzSK6y+NOKKuHfysOJZ xaz7Vk92zyu5VO6KgoAU8QP45RRmnzNJoDVUZDJfpaKmrOKCfuf8k0EdlKpJdYTcDd+l d4F8+c+CWSmbcuvkwxAyes8ldnU+bi1YORj9sb89stuJdeWKiKWsceO1bJsnusw9U3OO oSOQ== X-Gm-Message-State: AOAM5337p3eTTZWf8oZzf3hSa/0uSgblQjc6jQspmKHxWgHTkxXRVEPA vqnEdwX66CvU8k1Of1AKNYWC1swQMviooX4DYmd06uni X-Google-Smtp-Source: ABdhPJxtTp6A1iiW9+9byr97OHNC1tFxNwD7v20bHjrUvbZfv/LBfInrKzrpI6BZ2wu6VfUH0wq7z93/FASwJcI2Wlc= X-Received: by 2002:a25:2e4e:: with SMTP id b14mr23528502ybn.135.1612209026299; Mon, 01 Feb 2021 11:50:26 -0800 (PST) In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::b2a; envelope-from=yandros@gmail.com; helo=mail-yb1-xb2a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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:263697 Archived-At: --00000000000050fbfd05ba4baad3 Content-Type: text/plain; charset="UTF-8" On Fri, Jan 29, 2021 at 9:58 PM Richard Stallman wrote: > > I think there's a miscommunication here; the suggestion to bind C-= > wasn't > > (as I understand it) to bind it at the top level, but in the transient > > keymap, as an addition (or perhaps alternative?) to "whatever key was > hit > > last", ala Juri's prototype. > > What is the benefit of that? > > The purpose of these "easy repeat" commands is so that you can repeat the > command without moving your fingers. If you need to move your fingers to > C-=, > why bother? > I think the conversation has moved a bit, so I'm attempting to close the loop here. Apologies if it gets confusing with varying communications delays. I'm talking about the idea of adding a small number of extra bindings inside the transient keymap of certain repeatable commands, as marked by the user. (There is a parallel proposal to perhaps make #'repeat more useful by moving it's binding; that's related but not exactly what I'm talking about here -- This is a big part of what I mean by "closing the loop".) The benefit is to increase the options beyond just "I want to do exactly what I just did, again, a small number of times" to "I just did something that I'll want to adjust via a probably-small number of repetitions and (potentially repeated) inversions". For the case of other-window, the use-case is hunting quickly through a lot of windows, including allowing for a low-cost overshoot. For the various enlarge-window functions, it lets people iterate towards the desired size and evaluate at each step whether they like the current result, or want to tweak it up or down. (Personal aside: At various points in my life, I have done this inside Emacs *a lot*, although modern relatively-giant displays might make it less valuable in practice.) These bindings would be added to the transient keymap in addition to the last key hit (ala Juri's prototype or something similar), and would, at a low opportunity cost enable both "do that very last press again to repeat" and "standardized - and thus learnable - bindings for iterate-forward and iterate-backward". I suggested (and experimented with) adding "."/"," for #'repeat/#'repeat-inverse, and found it pretty pleasant. I haven't shared my exact prototype because it was a tiny change to Juri's except for #'repeat-inverse, which I didn't get entirely functional before I shifted my attention to other projects. Gregory suggested "C-=" as a potential binding with the benefit that it falls right next to "C--" for inverting, on US/UK keyboard layouts. (There is a parallel discussion about binding "C-=" to #'repeat at the top level, which is interesting but has some logistical issues, and is a separate proproal.) I hope this helps, ~Chad --00000000000050fbfd05ba4baad3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Fri, Jan 29, 2021 at 9:58 PM Richard S= tallman <rms@gnu.org> wrote:
=C2=A0 > I think t= here's a miscommunication here; the suggestion to bind C-=3D wasn't=
=C2=A0 > (as I understand it) to bind it at the top level, but in the tr= ansient
=C2=A0 > keymap, as an addition (or perhaps alternative?) to "whate= ver key was hit
=C2=A0 > last", ala Juri's prototype.

What is the benefit of that?

The purpose of these "easy repeat" commands is so that you can re= peat the
command without moving your fingers.=C2=A0 If you need to move your fingers= to C-=3D,
why bother?

I think the conversation ha= s moved a bit, so I'm attempting to close the loop here. Apologies if i= t gets confusing with varying communications delays.

I'm talking about the idea of adding a small number of extra binding= s inside the transient keymap of certain repeatable commands, as marked by = the user. (There is a parallel proposal to perhaps make #'repeat more u= seful by moving it's binding; that's related but not exactly what I= 'm talking about here -- This is a big part of what I mean by "clo= sing the loop".)

The benefit is to increase t= he options beyond just "I want to do exactly what I just did, again, a= small number of times" to "I just did something that I'll wa= nt to adjust via a probably-small number of repetitions and (potentially re= peated) inversions".=C2=A0

For the case of ot= her-window, the use-case is hunting quickly through a lot of windows, inclu= ding allowing for a low-cost overshoot. For the various enlarge-window func= tions, it lets people iterate towards the desired size and evaluate at each= step whether they like the current result, or want to tweak it up or down.= (Personal aside: At various points in my life, I have done this inside Ema= cs *a lot*, although modern relatively-giant displays might make it less va= luable in practice.)

These bindings would be added= to the transient keymap in addition to the last key hit (ala Juri's pr= ototype or something similar), and would, at a low opportunity cost enable = both "do that very last press again to repeat" and "standard= ized - and thus learnable - bindings for iterate-forward and iterate-backwa= rd".=C2=A0

I suggested (and experimented with= ) adding "."/"," for #'repeat/#'repeat-inverse,= and found it pretty pleasant. I haven't shared my exact prototype beca= use it was a tiny change to Juri's except for #'repeat-inverse, whi= ch I didn't get entirely functional before I shifted my attention to ot= her projects. Gregory suggested "C-=3D" as a potential binding wi= th the benefit that it falls right next to "C--" for inverting, o= n US/UK keyboard layouts. (There is a parallel discussion about binding &qu= ot;C-=3D" to #'repeat at the top level, which is interesting but h= as some logistical issues, and is a separate proproal.)

I hope this helps,
~Chad
--00000000000050fbfd05ba4baad3--