[gtksourceview] vim: implement o in visual mode
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] vim: implement o in visual mode
- Date: Sun, 28 Nov 2021 18:29:15 +0000 (UTC)
commit 436376958342bb3d8fbb7a882c63a4c0c96e458a
Author: Christian Hergert <chergert redhat com>
Date: Sat Nov 27 17:05:15 2021 -0600
vim: implement o in visual mode
gtksourceview/vim/gtksourcevimvisual.c | 22 ++++++++++++++++++++++
testsuite/test-vim-input.c | 7 +++++++
2 files changed, 29 insertions(+)
---
diff --git a/gtksourceview/vim/gtksourcevimvisual.c b/gtksourceview/vim/gtksourcevimvisual.c
index f0595562..e27fea4a 100644
--- a/gtksourceview/vim/gtksourcevimvisual.c
+++ b/gtksourceview/vim/gtksourcevimvisual.c
@@ -460,6 +460,23 @@ gtk_source_vim_visual_replace (GtkSourceVimVisual *self)
return TRUE;
}
+static void
+gtk_source_vim_visual_swap_cursor (GtkSourceVimVisual *self)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter cursor, started_at;
+
+ g_assert (GTK_SOURCE_IS_VIM_VISUAL (self));
+
+ gtk_source_vim_visual_get_bounds (self, &cursor, &started_at);
+
+ buffer = gtk_text_iter_get_buffer (&cursor);
+ gtk_text_buffer_move_mark (buffer, self->cursor, &started_at);
+ gtk_text_buffer_move_mark (buffer, self->started_at, &cursor);
+
+ gtk_source_vim_visual_track_motion (self);
+}
+
static gboolean
key_handler_g (GtkSourceVimVisual *self,
guint keyval,
@@ -618,6 +635,11 @@ key_handler_initial (GtkSourceVimVisual *self,
return TRUE;
}
+ case GDK_KEY_o:
+ gtk_source_vim_visual_swap_cursor (self);
+ gtk_source_vim_visual_clear (self);
+ return TRUE;
+
default:
break;
}
diff --git a/testsuite/test-vim-input.c b/testsuite/test-vim-input.c
index ceaddfa1..0bae218c 100644
--- a/testsuite/test-vim-input.c
+++ b/testsuite/test-vim-input.c
@@ -220,6 +220,12 @@ test_command_bar (void)
run_test ("", ":set ts=33\n", "");
}
+static void
+test_visual (void)
+{
+ run_test ("0123456789", "3lvllohhx", "06789");
+}
+
int
main (int argc,
char *argv[])
@@ -235,6 +241,7 @@ main (int argc,
g_test_add_func ("/GtkSourceView/vim-input/delete", test_delete);
g_test_add_func ("/GtkSourceView/vim-input/search-and-replace", test_search_and_replace);
g_test_add_func ("/GtkSourceView/vim-input/command-bar", test_command_bar);
+ g_test_add_func ("/GtkSourceView/vim-input/visual", test_visual);
ret = g_test_run ();
gtk_source_finalize ();
return ret;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]