[latexila/wip/use-gsv-smart-backspace] Use the GtkSourceView:smart-backspace property



commit 656469ce53331b0feff6ca0e66cfeeca7748829d
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Fri Aug 14 14:32:33 2015 +0200

    Use the GtkSourceView:smart-backspace property

 src/document_view.vala |   71 ++---------------------------------------------
 1 files changed, 3 insertions(+), 68 deletions(-)
---
diff --git a/src/document_view.vala b/src/document_view.vala
index 392cb2c..ed1fb4b 100644
--- a/src/document_view.vala
+++ b/src/document_view.vala
@@ -40,6 +40,9 @@ public class DocumentView : Gtk.SourceView
         auto_indent = true;
         indent_width = -1;
 
+        // TODO bind setting
+        smart_backspace = true;
+
         /* settings */
         _editor_settings = new GLib.Settings ("org.gnome.latexila.preferences.editor");
 
@@ -75,9 +78,6 @@ public class DocumentView : Gtk.SourceView
             warning ("Completion: %s", e.message);
         }
 
-        // smart backspace (if indent with spaces)
-        key_press_event.connect (on_backspace);
-
         // spell checking
         if (_editor_settings.get_boolean ("spell-checking"))
             activate_spell_checking ();
@@ -278,69 +278,4 @@ public class DocumentView : Gtk.SourceView
             provider.hide_calltip_window ();
         });
     }
-
-    private bool on_backspace (Gdk.EventKey event)
-    {
-        // See GDK_KEY_BackSpace in gdk/gdkkeysyms.h (not available in Vala)
-
-        // TODO~ connect/disconnect the signal when settings in gsettings change
-        if (! _editor_settings.get_boolean ("insert-spaces")
-            || ! _editor_settings.get_boolean ("forget-no-tabs")
-            || event.keyval != 0xff08
-            || buffer.has_selection
-            || tab_width == 1)
-
-            // propagate the event further
-            return false;
-
-        /* forget that we are not using tabulations */
-        TextIter iter_start, iter_insert;
-        buffer.get_iter_at_mark (out iter_insert, buffer.get_insert ());
-        buffer.get_iter_at_line (out iter_start, iter_insert.get_line ());
-
-        string text = buffer.get_text (iter_start, iter_insert, false);
-
-        if (text == "")
-            return false;
-
-        int nb_chars_to_delete = 0;
-        bool between = true; // between two indent
-
-        for (long i = 0 ; i < text.length ; i++)
-        {
-            if (text[i] == '\t')
-            {
-                nb_chars_to_delete = 1;
-                between = true;
-                continue;
-            }
-
-            // smart backspace only at the beginnig of a line, not inside it
-            if (text[i] != ' ')
-                return false;
-
-            // it's a space
-
-            if (between)
-            {
-                nb_chars_to_delete = 1;
-                between = false;
-                continue;
-            }
-
-            nb_chars_to_delete++;
-            if (nb_chars_to_delete == tab_width)
-                between = true;
-        }
-
-        iter_start = iter_insert;
-        if (! iter_start.backward_chars (nb_chars_to_delete))
-            return false;
-
-        buffer.begin_user_action ();
-        buffer.delete_range (iter_start, iter_insert);
-        buffer.end_user_action ();
-
-        return true;
-    }
 }


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