[gnome-builder] vim: allow [count] version for z motions
- From: Sébastien Lafargue <slafargue src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] vim: allow [count] version for z motions
- Date: Tue, 17 Nov 2015 21:56:00 +0000 (UTC)
commit 0f378722e7fa353133232fe0d61b489d232a07d4
Author: Sebastien Lafargue <slafargue gnome org>
Date: Tue Nov 17 22:51:52 2015 +0100
vim: allow [count] version for z motions
data/keybindings/vim.css | 14 +++++++-------
libide/ide-source-view-movements.c | 21 +++++++++++++++++++++
2 files changed, 28 insertions(+), 7 deletions(-)
---
diff --git a/data/keybindings/vim.css b/data/keybindings/vim.css
index a5675b9..d8733d5 100644
--- a/data/keybindings/vim.css
+++ b/data/keybindings/vim.css
@@ -1240,15 +1240,15 @@
@binding-set builder-vim-source-view-normal-z
{
- bind "z" { "movement" (scroll-screen-center, 0, 0, 0) };
- bind "period" { "movement" (scroll-screen-center, 0, 0, 0) };
+ bind "z" { "movement" (scroll-screen-center, 0, 0, 1) };
+ bind "period" { "movement" (scroll-screen-center, 0, 0, 1) };
- bind "t" { "movement" (scroll-screen-top, 0, 0, 0) };
- bind "Return" { "movement" (scroll-screen-top, 0, 0, 0) };
- bind "KP_Enter" { "movement" (scroll-screen-top, 0, 0, 0) };
+ bind "t" { "movement" (scroll-screen-top, 0, 0, 1) };
+ bind "Return" { "movement" (scroll-screen-top, 0, 0, 1) };
+ bind "KP_Enter" { "movement" (scroll-screen-top, 0, 0, 1) };
- bind "b" { "movement" (scroll-screen-bottom, 0, 0, 0) };
- bind "minus" { "movement" (scroll-screen-bottom, 0, 0, 0) };
+ bind "b" { "movement" (scroll-screen-bottom, 0, 0, 1) };
+ bind "minus" { "movement" (scroll-screen-bottom, 0, 0, 1) };
}
@binding-set builder-vim-source-view-normal-Z
diff --git a/libide/ide-source-view-movements.c b/libide/ide-source-view-movements.c
index d080c7f..1f81e8e 100644
--- a/libide/ide-source-view-movements.c
+++ b/libide/ide-source-view-movements.c
@@ -1489,10 +1489,29 @@ ide_source_view_movements_scroll_center (Movement *mv)
GtkTextView *text_view = (GtkTextView *)mv->self;
GtkTextMark *insert;
GtkTextBuffer *buffer;
+ gint line_count;
+ gint x_offset;
+ gint line_len;
buffer = gtk_text_view_get_buffer (text_view);
insert = gtk_text_buffer_get_insert (buffer);
+ if (mv->count > 0)
+ {
+ line_count = gtk_text_buffer_get_line_count (buffer);
+ if (mv->count > line_count)
+ return;
+
+ x_offset = gtk_text_iter_get_line_offset (&mv->insert);
+
+ gtk_text_iter_set_line (&mv->insert, mv->count - 1);
+ line_len = gtk_text_iter_get_chars_in_line (&mv->insert);
+ x_offset = MIN (x_offset, line_len -1);
+ gtk_text_iter_set_line_offset (&mv->insert, x_offset);
+
+ gtk_text_buffer_move_mark (buffer, insert, &mv->insert);
+ }
+
switch ((int)mv->type)
{
case IDE_SOURCE_VIEW_MOVEMENT_SCROLL_SCREEN_BOTTOM:
@@ -1510,6 +1529,8 @@ ide_source_view_movements_scroll_center (Movement *mv)
default:
break;
}
+
+ mv->ignore_scroll_to_insert = TRUE;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]