From 1fb3df237b399353fe3fc5c0c912e0c3f4707af3 Mon Sep 17 00:00:00 2001 From: mcclurgm Date: Fri, 1 Feb 2019 15:00:40 -0600 Subject: [PATCH 1/6] Add vim emulation command "a" --- plugins/vim-emulation/vim-emulation.vala | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/vim-emulation/vim-emulation.vala b/plugins/vim-emulation/vim-emulation.vala index 6f747452d2..36f38b0887 100644 --- a/plugins/vim-emulation/vim-emulation.vala +++ b/plugins/vim-emulation/vim-emulation.vala @@ -195,6 +195,15 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatabl view.move_cursor (Gtk.MovementStep.DISPLAY_LINE_ENDS, 1, false); debug ("Vim Emulation: INSERT Mode!"); break; + case Gdk.Key.a: + if (mode == Mode.INSERT) { + return false; + } + + mode = Mode.INSERT; + view.move_cursor (Gtk.MovementStep.LOGICAL_POSITIONS, 1, false); + debug ("Vim Emulation: INSERT Mode!"); + break; case 46: // Dot "." debug (action); view.insert_at_cursor (action); From 8cfead03fad4e4cc2bc2400017a837f2234dbe30 Mon Sep 17 00:00:00 2001 From: mcclurgm Date: Fri, 1 Feb 2019 15:05:18 -0600 Subject: [PATCH 2/6] Use paragraph instead of display lines --- plugins/vim-emulation/vim-emulation.vala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/vim-emulation/vim-emulation.vala b/plugins/vim-emulation/vim-emulation.vala index 36f38b0887..761882dfdb 100644 --- a/plugins/vim-emulation/vim-emulation.vala +++ b/plugins/vim-emulation/vim-emulation.vala @@ -142,12 +142,12 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatabl case Gdk.Key.Down: case Gdk.Key.j: case Gdk.Key.plus: - view.move_cursor (Gtk.MovementStep.DISPLAY_LINES, 1, false); + view.move_cursor (Gtk.MovementStep.PARAGRAPHS, 1, false); break; case Gdk.Key.Up: case Gdk.Key.k: case Gdk.Key.minus: - view.move_cursor (Gtk.MovementStep.DISPLAY_LINES, -1, false); + view.move_cursor (Gtk.MovementStep.PARAGRAPHS, -1, false); break; case Gdk.Key.Right: case Gdk.Key.l: @@ -155,7 +155,7 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatabl break; case Gdk.Key.End: case Gdk.Key.dollar: - view.move_cursor (Gtk.MovementStep.DISPLAY_LINE_ENDS, 1, false); + view.move_cursor (Gtk.MovementStep.PARAGRAPH_ENDS, 1, false); break; case Gdk.Key.u: view.undo (); @@ -192,7 +192,7 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatabl } mode = Mode.INSERT; - view.move_cursor (Gtk.MovementStep.DISPLAY_LINE_ENDS, 1, false); + view.move_cursor (Gtk.MovementStep.PARAGRAPH_ENDS, 1, false); debug ("Vim Emulation: INSERT Mode!"); break; case Gdk.Key.a: From e62d0ee529b3f581c843d19ef7a355eff007a2fa Mon Sep 17 00:00:00 2001 From: mcclurgm Date: Fri, 1 Feb 2019 15:05:43 -0600 Subject: [PATCH 3/6] Update a behavior to use visual characters --- plugins/vim-emulation/vim-emulation.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/vim-emulation/vim-emulation.vala b/plugins/vim-emulation/vim-emulation.vala index 761882dfdb..1711bb9d7e 100644 --- a/plugins/vim-emulation/vim-emulation.vala +++ b/plugins/vim-emulation/vim-emulation.vala @@ -201,7 +201,7 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatabl } mode = Mode.INSERT; - view.move_cursor (Gtk.MovementStep.LOGICAL_POSITIONS, 1, false); + view.move_cursor (Gtk.MovementStep.VISUAL_POSITIONS, 1, false); debug ("Vim Emulation: INSERT Mode!"); break; case 46: // Dot "." From db1a22eb6f7928b995f78458606dfb9c4e752e3e Mon Sep 17 00:00:00 2001 From: mcclurgm Date: Fri, 1 Feb 2019 15:07:29 -0600 Subject: [PATCH 4/6] Ignore whitespace for 0 command --- plugins/vim-emulation/vim-emulation.vala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/vim-emulation/vim-emulation.vala b/plugins/vim-emulation/vim-emulation.vala index 1711bb9d7e..2df6140b0a 100644 --- a/plugins/vim-emulation/vim-emulation.vala +++ b/plugins/vim-emulation/vim-emulation.vala @@ -211,7 +211,9 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatabl case Gdk.Key.Home: case Gdk.Key.@0: if (number == "") { - view.move_cursor (Gtk.MovementStep.DISPLAY_LINES, 1, false); + view.move_cursor (Gtk.MovementStep.PARAGRAPHS, -1, false); + view.move_cursor (Gtk.MovementStep.PARAGRAPH_ENDS, 1, false); + view.move_cursor (Gtk.MovementStep.VISUAL_POSITIONS, 1, false); } else { number += "0"; } From 51974a0af12dd53024c5faeef2163e0b61e90c2e Mon Sep 17 00:00:00 2001 From: mcclurgm Date: Fri, 1 Feb 2019 15:07:55 -0600 Subject: [PATCH 5/6] Implement caret ^ command --- plugins/vim-emulation/vim-emulation.vala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/vim-emulation/vim-emulation.vala b/plugins/vim-emulation/vim-emulation.vala index 2df6140b0a..d4cf1163c0 100644 --- a/plugins/vim-emulation/vim-emulation.vala +++ b/plugins/vim-emulation/vim-emulation.vala @@ -218,6 +218,9 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatabl number += "0"; } + break; + case Gdk.Key.asciicircum: // Caret "^" + view.move_cursor (Gtk.MovementStep.PARAGRAPH_ENDS, -1, false); break; case Gdk.Key.e: view.move_cursor (Gtk.MovementStep.WORDS, number == "" ? 1 : int.parse (number), false); From 9a2d2f042cf6b0d9320fe1639677ac9f06c6fcf8 Mon Sep 17 00:00:00 2001 From: mcclurgm Date: Fri, 1 Feb 2019 15:08:07 -0600 Subject: [PATCH 6/6] Open in command mode by default --- plugins/vim-emulation/vim-emulation.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/vim-emulation/vim-emulation.vala b/plugins/vim-emulation/vim-emulation.vala index d4cf1163c0..753455f5ef 100644 --- a/plugins/vim-emulation/vim-emulation.vala +++ b/plugins/vim-emulation/vim-emulation.vala @@ -26,7 +26,7 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatabl VISUAL } - Mode mode = Mode.INSERT; + Mode mode = Mode.COMMAND; string number = ""; string action = ""; bool g = false;