diff mbox series

[v3] git-gui: Handle Ctrl + BS/Del in the commit msg

Message ID 20200512102806.GA20813@abuya.home (mailing list archive)
State New, archived
Headers show
Series [v3] git-gui: Handle Ctrl + BS/Del in the commit msg | expand

Commit Message

Ismael Luceno May 12, 2020, 10:28 a.m. UTC
From: Ismael Luceno <ismael.luceno@tttech-auto.com>

- Control+BackSpace: Delete word to the left of the cursor.
- Control+Delete   : Delete word to the right of the cursor.

Originally introduced by BRIEF and Turbo Vision between 1985 and 1992,
they were adopted by most CUA-Compliant UIs, including those of: OS/2,
Windows, Mac OS, Qt, GTK, Open/Libre Office, Gecko, and GNU Emacs.

In both cases Tk already implements the functionality bound to other key
combination, so we use that.

Graphical examples:

Deleting to the left:
        v------ pointer
X_WORD____X
  ^-----^------ selection

Deleting to the right:
  v--------- pointer
X_WORD_X
  ^--^------ selection

Signed-off-by: Ismael Luceno <ismael.luceno@tttech-auto.com>

---
I'm re-submitting the patch after >1 year.

CC: Junio C Hamano <gitster@pobox.com>
CC: "brian m. carlson" <sandals@crustytoothpaste.net>
CC: Pat Thoyts <patthoyts@users.sourceforge.net>
CC: Johannes Schindelin <Johannes.Schindelin@gmx.de>

Notes:
    Changes since v2:
    - Reimplemented via existing events, which correctly delete spaces.
    - Further improved commit message.
    
    Changes since v1:
    - Improved commit message.

 git-gui/git-gui.sh | 2 ++
 1 file changed, 2 insertions(+)

Comments

Pratyush Yadav May 12, 2020, 1:02 p.m. UTC | #1
Hi Ismael,

On 12/05/20 12:28PM, Ismael Luceno wrote:
> From: Ismael Luceno <ismael.luceno@tttech-auto.com>
> 
> - Control+BackSpace: Delete word to the left of the cursor.
> - Control+Delete   : Delete word to the right of the cursor.
> 
> Originally introduced by BRIEF and Turbo Vision between 1985 and 1992,
> they were adopted by most CUA-Compliant UIs, including those of: OS/2,
> Windows, Mac OS, Qt, GTK, Open/Libre Office, Gecko, and GNU Emacs.
> 
> In both cases Tk already implements the functionality bound to other key
> combination, so we use that.
> 
> Graphical examples:
> 
> Deleting to the left:
>         v------ pointer
> X_WORD____X
>   ^-----^------ selection
> 
> Deleting to the right:
>   v--------- pointer
> X_WORD_X
>   ^--^------ selection
> 
> Signed-off-by: Ismael Luceno <ismael.luceno@tttech-auto.com>
> 
> ---
> I'm re-submitting the patch after >1 year.
> 
> CC: Junio C Hamano <gitster@pobox.com>
> CC: "brian m. carlson" <sandals@crustytoothpaste.net>
> CC: Pat Thoyts <patthoyts@users.sourceforge.net>
> CC: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> 
> Notes:
>     Changes since v2:
>     - Reimplemented via existing events, which correctly delete spaces.
>     - Further improved commit message.
>     
>     Changes since v1:
>     - Improved commit message.
> 
>  git-gui/git-gui.sh | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
> index 6de74ce639..c4e0270626 100755
> --- a/git-gui/git-gui.sh
> +++ b/git-gui/git-gui.sh

You based the patch on top of the Git tree. Since Git Gui is maintained 
separate from Git, patches are expected to be based on top of the Git 
Gui tree [0]. I fixed it up and applied the patch on my tree.

> @@ -3812,6 +3812,8 @@ bind $ui_comm <$M1B-Key-KP_Subtract> {show_less_context;break}
>  bind $ui_comm <$M1B-Key-equal> {show_more_context;break}
>  bind $ui_comm <$M1B-Key-plus> {show_more_context;break}
>  bind $ui_comm <$M1B-Key-KP_Add> {show_more_context;break}
> +bind $ui_comm <Control-Key-BackSpace> {event generate %W <Meta-Delete>;break}
> +bind $ui_comm <Control-Key-Delete> {event generate %W <Meta-d>;break}

Don't use "Control" directly to maintain compatibility with MacOS. Use 
$M1B like the surrounding code does. I fixed it up locally, so no need 
to send in a new version. You can find the fixed up version here [1]. 
Test it if you'd like.

Will merge it in. Thanks.
  
[0] https://github.com/prati0100/git-gui/
[1] https://github.com/prati0100/git-gui/tree/il/ctrl-bs-del
Ismael Luceno May 12, 2020, 1:28 p.m. UTC | #2
On 12/May/2020 18:32, Pratyush Yadav wrote:
> Hi Ismael,
> 
> On 12/05/20 12:28PM, Ismael Luceno wrote:
> > From: Ismael Luceno <ismael.luceno@tttech-auto.com>
> > 
> > - Control+BackSpace: Delete word to the left of the cursor.
> > - Control+Delete   : Delete word to the right of the cursor.
> > 
> > Originally introduced by BRIEF and Turbo Vision between 1985 and 1992,
> > they were adopted by most CUA-Compliant UIs, including those of: OS/2,
> > Windows, Mac OS, Qt, GTK, Open/Libre Office, Gecko, and GNU Emacs.
> > 
> > In both cases Tk already implements the functionality bound to other key
> > combination, so we use that.
> > 
> > Graphical examples:
> > 
> > Deleting to the left:
> >         v------ pointer
> > X_WORD____X
> >   ^-----^------ selection
> > 
> > Deleting to the right:
> >   v--------- pointer
> > X_WORD_X
> >   ^--^------ selection
> > 
> > Signed-off-by: Ismael Luceno <ismael.luceno@tttech-auto.com>
> > 
> > ---
> > I'm re-submitting the patch after >1 year.
> > 
> > CC: Junio C Hamano <gitster@pobox.com>
> > CC: "brian m. carlson" <sandals@crustytoothpaste.net>
> > CC: Pat Thoyts <patthoyts@users.sourceforge.net>
> > CC: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> > 
> > Notes:
> >     Changes since v2:
> >     - Reimplemented via existing events, which correctly delete spaces.
> >     - Further improved commit message.
> >     
> >     Changes since v1:
> >     - Improved commit message.
> > 
> >  git-gui/git-gui.sh | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
> > index 6de74ce639..c4e0270626 100755
> > --- a/git-gui/git-gui.sh
> > +++ b/git-gui/git-gui.sh
> 
> You based the patch on top of the Git tree. Since Git Gui is maintained 
> separate from Git, patches are expected to be based on top of the Git 
> Gui tree [0]. I fixed it up and applied the patch on my tree.
> 
> > @@ -3812,6 +3812,8 @@ bind $ui_comm <$M1B-Key-KP_Subtract> {show_less_context;break}
> >  bind $ui_comm <$M1B-Key-equal> {show_more_context;break}
> >  bind $ui_comm <$M1B-Key-plus> {show_more_context;break}
> >  bind $ui_comm <$M1B-Key-KP_Add> {show_more_context;break}
> > +bind $ui_comm <Control-Key-BackSpace> {event generate %W <Meta-Delete>;break}
> > +bind $ui_comm <Control-Key-Delete> {event generate %W <Meta-d>;break}
> 
> Don't use "Control" directly to maintain compatibility with MacOS. Use 
> $M1B like the surrounding code does. I fixed it up locally, so no need 
> to send in a new version. You can find the fixed up version here [1]. 
> Test it if you'd like.
> 
> Will merge it in. Thanks.

Thanks.
Pratyush Yadav May 21, 2020, 1 p.m. UTC | #3
On 12/05/20 12:28PM, Ismael Luceno wrote:
> From: Ismael Luceno <ismael.luceno@tttech-auto.com>
> 
> - Control+BackSpace: Delete word to the left of the cursor.
> - Control+Delete   : Delete word to the right of the cursor.
> 
> Originally introduced by BRIEF and Turbo Vision between 1985 and 1992,
> they were adopted by most CUA-Compliant UIs, including those of: OS/2,
> Windows, Mac OS, Qt, GTK, Open/Libre Office, Gecko, and GNU Emacs.
> 
> In both cases Tk already implements the functionality bound to other key
> combination, so we use that.
> 
> Graphical examples:
> 
> Deleting to the left:
>         v------ pointer
> X_WORD____X
>   ^-----^------ selection
> 
> Deleting to the right:
>   v--------- pointer
> X_WORD_X
>   ^--^------ selection
> 
> Signed-off-by: Ismael Luceno <ismael.luceno@tttech-auto.com>

Merged to git-gui/master.
diff mbox series

Patch

diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 6de74ce639..c4e0270626 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -3812,6 +3812,8 @@  bind $ui_comm <$M1B-Key-KP_Subtract> {show_less_context;break}
 bind $ui_comm <$M1B-Key-equal> {show_more_context;break}
 bind $ui_comm <$M1B-Key-plus> {show_more_context;break}
 bind $ui_comm <$M1B-Key-KP_Add> {show_more_context;break}
+bind $ui_comm <Control-Key-BackSpace> {event generate %W <Meta-Delete>;break}
+bind $ui_comm <Control-Key-Delete> {event generate %W <Meta-d>;break}
 
 bind $ui_diff <$M1B-Key-x> {tk_textCopy %W;break}
 bind $ui_diff <$M1B-Key-X> {tk_textCopy %W;break}