From 7ada01af4a6fbaa8bb01db92a4b9c6a51ebc6a97 Mon Sep 17 00:00:00 2001 From: mcclurgm Date: Sat, 28 Mar 2020 21:30:19 -0600 Subject: [PATCH 1/4] Add "o" command --- plugins/vim-emulation/vim-emulation.vala | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/plugins/vim-emulation/vim-emulation.vala b/plugins/vim-emulation/vim-emulation.vala index 92b9b2c851..213a3d91f3 100644 --- a/plugins/vim-emulation/vim-emulation.vala +++ b/plugins/vim-emulation/vim-emulation.vala @@ -194,6 +194,19 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatable view.move_cursor (Gtk.MovementStep.DISPLAY_LINE_ENDS, 1, false); debug ("Vim Emulation: INSERT Mode!"); break; + case Gdk.Key.o: + if (mode == Mode.INSERT) { + return false; + } + mode = Mode.INSERT; + debug ("Vim Emulation: INSERT Mode!"); + + view.move_cursor (Gtk.MovementStep.PARAGRAPH_ENDS, 1, false); + var buffer = view.buffer; + Gtk.TextIter insert; + buffer.get_iter_at_mark (out insert, buffer.get_insert ()); + buffer.insert (ref insert, "\n", 1); + break; case 46: // Dot "." debug (action); view.insert_at_cursor (action); From fe43caf4440bff805506c33644dbc7ea3b5033ee Mon Sep 17 00:00:00 2001 From: mcclurgm Date: Sat, 28 Mar 2020 21:37:39 -0600 Subject: [PATCH 2/4] Add "O" command based on "o" implementation --- plugins/vim-emulation/vim-emulation.vala | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/vim-emulation/vim-emulation.vala b/plugins/vim-emulation/vim-emulation.vala index 213a3d91f3..955f161d8e 100644 --- a/plugins/vim-emulation/vim-emulation.vala +++ b/plugins/vim-emulation/vim-emulation.vala @@ -207,6 +207,20 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatable buffer.get_iter_at_mark (out insert, buffer.get_insert ()); buffer.insert (ref insert, "\n", 1); break; + case Gdk.Key.O: + if (mode == Mode.INSERT) { + return false; + } + mode = Mode.INSERT; + debug ("Vim Emulation: INSERT Mode!"); + + view.move_cursor (Gtk.MovementStep.PARAGRAPH_ENDS, -1, false); + var buffer = view.buffer; + Gtk.TextIter insert; + buffer.get_iter_at_mark (out insert, buffer.get_insert ()); + buffer.insert (ref insert, "\n", 1); + view.move_cursor (Gtk.MovementStep.PARAGRAPHS, -1, false); + break; case 46: // Dot "." debug (action); view.insert_at_cursor (action); From 8ba5b26b14bf8a5da0353fb6fa5b3b1fb4eaa9e8 Mon Sep 17 00:00:00 2001 From: Michael McClurg Date: Sun, 7 Feb 2021 09:53:03 -0700 Subject: [PATCH 3/4] Simplify buffer interactions --- plugins/vim-emulation/vim-emulation.vala | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/plugins/vim-emulation/vim-emulation.vala b/plugins/vim-emulation/vim-emulation.vala index 3510c28338..9c50ee35ab 100644 --- a/plugins/vim-emulation/vim-emulation.vala +++ b/plugins/vim-emulation/vim-emulation.vala @@ -213,10 +213,7 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatable debug ("Vim Emulation: INSERT Mode!"); view.move_cursor (Gtk.MovementStep.PARAGRAPH_ENDS, 1, false); - var buffer = view.buffer; - Gtk.TextIter insert; - buffer.get_iter_at_mark (out insert, buffer.get_insert ()); - buffer.insert (ref insert, "\n", 1); + view.insert_at_cursor ("\n"); break; case Gdk.Key.O: if (mode == Mode.INSERT) { @@ -226,10 +223,7 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatable debug ("Vim Emulation: INSERT Mode!"); view.move_cursor (Gtk.MovementStep.PARAGRAPH_ENDS, -1, false); - var buffer = view.buffer; - Gtk.TextIter insert; - buffer.get_iter_at_mark (out insert, buffer.get_insert ()); - buffer.insert (ref insert, "\n", 1); + view.insert_at_cursor ("\n"); view.move_cursor (Gtk.MovementStep.PARAGRAPHS, -1, false); break; case 46: // Dot "." From d7dfaa08143514b7660f1131bda7f8fcf8434778 Mon Sep 17 00:00:00 2001 From: Michael McClurg Date: Wed, 10 Feb 2021 20:52:22 -0700 Subject: [PATCH 4/4] Fix 0 in indented lines --- plugins/vim-emulation/vim-emulation.vala | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/vim-emulation/vim-emulation.vala b/plugins/vim-emulation/vim-emulation.vala index 9c50ee35ab..e66ec7a025 100644 --- a/plugins/vim-emulation/vim-emulation.vala +++ b/plugins/vim-emulation/vim-emulation.vala @@ -222,8 +222,12 @@ public class Scratch.Plugins.VimEmulation : Peas.ExtensionBase, Peas.Activatable mode = Mode.INSERT; debug ("Vim Emulation: INSERT Mode!"); + // Move to start of current line view.move_cursor (Gtk.MovementStep.PARAGRAPH_ENDS, -1, false); + view.move_cursor (Gtk.MovementStep.DISPLAY_LINE_ENDS, -1, false); + // Insert newline before current line view.insert_at_cursor ("\n"); + // Move to beginning of the new line view.move_cursor (Gtk.MovementStep.PARAGRAPHS, -1, false); break; case 46: // Dot "."