[anjuta] Fix column number on lines with tabs



commit 54d81cf8af3975da47e9dd48e288efa868f8b0aa
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Thu Aug 8 22:50:25 2013 -0500

    Fix column number on lines with tabs
    
    https://bugzilla.gnome.org/show_bug.cgi?id=705615

 plugins/sourceview/sourceview.c |   27 +++++++++++++++++++++++++--
 1 files changed, 25 insertions(+), 2 deletions(-)
---
diff --git a/plugins/sourceview/sourceview.c b/plugins/sourceview/sourceview.c
index 33024c4..8323084 100644
--- a/plugins/sourceview/sourceview.c
+++ b/plugins/sourceview/sourceview.c
@@ -1394,10 +1394,33 @@ static gint ieditor_get_column(IAnjutaEditor *editor, GError **e)
        Sourceview* sv = ANJUTA_SOURCEVIEW(editor);
        GtkTextBuffer* buffer = GTK_TEXT_BUFFER(sv->priv->document);
        GtkTextIter iter;
+       GtkTextIter end_iter;
+       guint column;
+       guint end_column;
+       guint tab_size;
 
-       gtk_text_buffer_get_iter_at_mark(buffer, &iter,
+       gtk_text_buffer_get_iter_at_mark(buffer, &end_iter,
                                                                         gtk_text_buffer_get_insert(buffer));
-       return gtk_text_iter_get_line_offset(&iter);
+       gtk_text_buffer_get_iter_at_line(buffer, &iter,
+                                                                        gtk_text_iter_get_line(&end_iter));
+
+       column = 0;
+       end_column = gtk_text_iter_get_line_offset(&end_iter);
+
+       tab_size = ieditor_get_tab_size(editor, e);
+
+       for ( ;
+            gtk_text_iter_get_line_offset(&iter) != end_column;
+            gtk_text_iter_forward_char(&iter), column++)
+       {
+               /* Tab is U+0009 */
+               if (gtk_text_iter_get_char(&iter) == 9)
+               {
+                       column += tab_size - (column % tab_size) - 1;
+               }
+       }
+
+       return column;
 }
 
 /* Return TRUE if editor is in overwrite mode */


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