[gnome-builder] vim: fix search movement in visual mode
- From: Sébastien Lafargue <slafargue src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] vim: fix search movement in visual mode
- Date: Sun, 20 Mar 2016 17:27:55 +0000 (UTC)
commit 1dc8593289239710c302645d5c7d1e42ce557039
Author: Fangwen Yu <yynyygy gmail com>
Date: Sun Mar 20 23:20:12 2016 +0800
vim: fix search movement in visual mode
ide_source_view_real_move_search () now uses insert iter instead
of selection bounds as start of search, this ensures a consistent
behavior whether extend_selection is set or not.
https://bugzilla.gnome.org/show_bug.cgi?id=763915
data/keybindings/vim.css | 6 ++----
libide/ide-source-view.c | 15 +++++++--------
2 files changed, 9 insertions(+), 12 deletions(-)
---
diff --git a/data/keybindings/vim.css b/data/keybindings/vim.css
index deabc1d..d4c23c6 100644
--- a/data/keybindings/vim.css
+++ b/data/keybindings/vim.css
@@ -327,8 +327,7 @@
bind "semicolon" { "movement" (next-match-search-char, 0, 0, 1)
"clear-count" () };
- bind "n" { "movement" (next-char, 0, 1, 0)
- "move-search" (tab-forward, 0, 0, 1, 1, 0) };
+ bind "n" { "move-search" (tab-forward, 0, 0, 1, 1, 0) };
bind "<shift>n" { "move-search" (tab-backward, 0, 0, 0, 1, 0) };
bind "numbersign" { "movement" (previous-word-end, 0, 1, 1)
@@ -1894,8 +1893,7 @@
bind "b" { "movement" (previous-word-start, 1, 1, 1) };
bind "<shift>b" { "movement" (previous-full-word-start, 1, 1, 1) };
- bind "n" { "movement" (next-char, 1, 1, 0)
- "move-search" (tab-forward, 1, 0, 1, 1, 0) };
+ bind "n" { "move-search" (tab-forward, 1, 0, 1, 1, 0) };
bind "<shift>n" { "move-search" (tab-backward, 1, 0, 0, 1, 0) };
bind "numbersign" { "save-insert-mark" ()
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index 0641594..796ccfc 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -3546,10 +3546,10 @@ ide_source_view_real_move_search (IdeSourceView *self,
GtkTextView *text_view = (GtkTextView *)self;
g_autoptr(SearchMovement) mv = NULL;
GtkTextBuffer *buffer;
+ GtkTextMark *insert_mark;
+ GtkTextIter insert_iter;
GtkSourceSearchSettings *settings;
const gchar *search_text;
- GtkTextIter begin;
- GtkTextIter end;
gboolean is_forward;
g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
@@ -3602,10 +3602,8 @@ ide_source_view_real_move_search (IdeSourceView *self,
}
buffer = gtk_text_view_get_buffer (text_view);
- gtk_text_buffer_get_selection_bounds (buffer, &begin, &end);
-
- if (!extend_selection)
- gtk_text_iter_order (&begin, &end);
+ insert_mark = gtk_text_buffer_get_insert (buffer);
+ gtk_text_buffer_get_iter_at_mark (buffer, &insert_iter, insert_mark);
is_forward = (dir == GTK_DIR_DOWN) || (dir == GTK_DIR_RIGHT);
@@ -3614,8 +3612,9 @@ ide_source_view_real_move_search (IdeSourceView *self,
if (is_forward)
{
+ gtk_text_iter_forward_char (&insert_iter);
gtk_source_search_context_forward_async (priv->search_context,
- &end,
+ &insert_iter,
NULL,
ide_source_view__search_forward_cb,
search_movement_ref (mv));
@@ -3623,7 +3622,7 @@ ide_source_view_real_move_search (IdeSourceView *self,
else
{
gtk_source_search_context_backward_async (priv->search_context,
- &begin,
+ &insert_iter,
NULL,
ide_source_view__search_backward_cb,
search_movement_ref (mv));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]