[gnome-builder] vim: fix search movement in visual mode



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]