[latexila/wip/use-gsv-smart-backspace] Use the GtkSourceView:smart-backspace property
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [latexila/wip/use-gsv-smart-backspace] Use the GtkSourceView:smart-backspace property
- Date: Fri, 14 Aug 2015 12:52:20 +0000 (UTC)
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]