summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hergert <chergert@redhat.com>2022-09-21 22:54:58 -0700
committerChristian Hergert <chergert@redhat.com>2022-09-21 22:54:58 -0700
commit342caac709d25abd0fefde264f1dae7f96248652 (patch)
treefd827a7b4e553ccbc49a74ad9ec6d1f8386a323f
parent10728bdd397cd8098970720d0b9a5e7ead201125 (diff)
downloadgtksourceview-342caac709d25abd0fefde264f1dae7f96248652.tar.gz
vim: allow applications to handle gd/gD
-rw-r--r--gtksourceview/vim/gtksourcevimnormal.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gtksourceview/vim/gtksourcevimnormal.c b/gtksourceview/vim/gtksourcevimnormal.c
index 54cd61f3..5f85052d 100644
--- a/gtksourceview/vim/gtksourcevimnormal.c
+++ b/gtksourceview/vim/gtksourcevimnormal.c
@@ -1048,6 +1048,7 @@ key_handler_g (GtkSourceVimNormal *self,
const char *string)
{
GtkSourceVimState *new_state;
+ GtkSourceVimState *root;
g_assert (GTK_SOURCE_IS_VIM_NORMAL (self));
@@ -1077,6 +1078,19 @@ key_handler_g (GtkSourceVimNormal *self,
gtk_source_vim_state_push (GTK_SOURCE_VIM_STATE (self), new_state);
return TRUE;
+ case GDK_KEY_d:
+ case GDK_KEY_D:
+ if ((root = gtk_source_vim_state_get_root (GTK_SOURCE_VIM_STATE (self))) &&
+ GTK_SOURCE_IS_VIM (root))
+ {
+ const char *command = keyval == GDK_KEY_d ? "gd" : "gD";
+ gtk_source_vim_emit_execute_command (GTK_SOURCE_VIM (root), command);
+ gtk_source_vim_normal_clear (self);
+ return TRUE;
+ }
+
+ G_GNUC_FALLTHROUGH;
+
default:
return gtk_source_vim_normal_bail (self);
}