[gnome-builder] vim: use helper for selecting a range instead of moving marks



commit d8c698c530f8bd82cc51d4847cc12fb00d2db1da
Author: Christian Hergert <christian hergert me>
Date:   Mon Oct 6 02:08:27 2014 -0700

    vim: use helper for selecting a range instead of moving marks
    
    This will allow us to catch some corner cases like re-selecting a single
    character upon a movement.

 src/editor/gb-editor-vim.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/src/editor/gb-editor-vim.c b/src/editor/gb-editor-vim.c
index 9879711..7a5e207 100644
--- a/src/editor/gb-editor-vim.c
+++ b/src/editor/gb-editor-vim.c
@@ -159,6 +159,9 @@ static guint       gSignals [LAST_SIGNAL];
 
 static void text_iter_swap (GtkTextIter *a,
                             GtkTextIter *b);
+static void gb_editor_vim_select_range (GbEditorVim *vim,
+                                        GtkTextIter *insert_iter,
+                                        GtkTextIter *selection_iter);
 static void gb_editor_vim_cmd_select_line (GbEditorVim *vim,
                                            guint        count,
                                            gchar        modifier);
@@ -321,17 +324,17 @@ gb_editor_vim_ensure_anchor_selected (GbEditorVim *vim)
       (gtk_text_iter_compare (&insert_iter, &anchor_end) < 0))
     {
       if (gtk_text_iter_compare (&insert_iter, &selection_iter) < 0)
-        gtk_text_buffer_move_mark (buffer, selection_mark, &anchor_end);
+        gb_editor_vim_select_range (vim, &insert_iter, &anchor_end);
       else
-        gtk_text_buffer_move_mark (buffer, insert_mark, &anchor_end);
+        gb_editor_vim_select_range (vim, &anchor_end, &selection_iter);
     }
   else if ((gtk_text_iter_compare (&selection_iter, &anchor_begin) > 0) &&
            (gtk_text_iter_compare (&insert_iter, &anchor_begin) > 0))
     {
       if (gtk_text_iter_compare (&insert_iter, &selection_iter) < 0)
-        gtk_text_buffer_move_mark (buffer, insert_mark, &anchor_begin);
+        gb_editor_vim_select_range (vim, &anchor_begin, &selection_iter);
       else
-        gtk_text_buffer_move_mark (buffer, selection_mark, &anchor_begin);
+        gb_editor_vim_select_range (vim, &insert_iter, &anchor_begin);
     }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]