[gtksourceview/wip/chergert/vim: 178/293] add motion for ctrl+f/b
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/chergert/vim: 178/293] add motion for ctrl+f/b
- Date: Fri, 5 Nov 2021 04:23:03 +0000 (UTC)
commit deda93478e19fd97a490c5de37f340e53006f87b
Author: Christian Hergert <chergert redhat com>
Date: Sat Oct 30 14:48:07 2021 -0700
add motion for ctrl+f/b
this is help from the standpoint of selections, even though it is handled
differently in normal mode.
gtksourceview/vim/gtk-source-vim-motion.c | 44 +++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
---
diff --git a/gtksourceview/vim/gtk-source-vim-motion.c b/gtksourceview/vim/gtk-source-vim-motion.c
index c67424fe..56d8f8c3 100644
--- a/gtksourceview/vim/gtk-source-vim-motion.c
+++ b/gtksourceview/vim/gtk-source-vim-motion.c
@@ -1054,6 +1054,34 @@ motion_backward_sentence_start (GtkTextIter *iter,
return !gtk_text_iter_equal (&before, iter);
}
+static gboolean
+motion_next_scroll_page (GtkTextIter *iter,
+ GtkSourceVimMotion *self)
+{
+ int count = gtk_source_vim_state_get_count (GTK_SOURCE_VIM_STATE (self));
+ GtkTextBuffer *buffer = gtk_text_iter_get_buffer (iter);
+ GtkTextMark *insert = gtk_text_buffer_get_insert (buffer);
+
+ gtk_source_vim_state_scroll_page (GTK_SOURCE_VIM_STATE (self), count);
+ gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (buffer), iter, insert);
+
+ return TRUE;
+}
+
+static gboolean
+motion_prev_scroll_page (GtkTextIter *iter,
+ GtkSourceVimMotion *self)
+{
+ int count = gtk_source_vim_state_get_count (GTK_SOURCE_VIM_STATE (self));
+ GtkTextBuffer *buffer = gtk_text_iter_get_buffer (iter);
+ GtkTextMark *insert = gtk_text_buffer_get_insert (buffer);
+
+ gtk_source_vim_state_scroll_page (GTK_SOURCE_VIM_STATE (self), -count);
+ gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (buffer), iter, insert);
+
+ return TRUE;
+}
+
GtkSourceVimState *
gtk_source_vim_motion_new (void)
{
@@ -1144,6 +1172,22 @@ gtk_source_vim_motion_handle_keypress (GtkSourceVimState *state,
return TRUE;
}
+ if ((mods & GDK_CONTROL_MASK) != 0)
+ {
+ switch (keyval)
+ {
+
+ case GDK_KEY_f:
+ return gtk_source_vim_motion_complete (self, motion_next_scroll_page,
INCLUSIVE);
+
+ case GDK_KEY_b:
+ return gtk_source_vim_motion_complete (self, motion_prev_scroll_page,
INCLUSIVE);
+
+ default:
+ break;
+ }
+ }
+
switch (keyval)
{
case GDK_KEY_0:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]