File valencia-gedit3.patch of Package valencia

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..802c2b1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*~
+*.c
+/libvalencia.so
+/valencia.gedit-plugin
+/valencia.plugin
diff --git a/INSTALL b/INSTALL
index 839eb64..d1efce9 100644
--- a/INSTALL
+++ b/INSTALL
@@ -14,5 +14,5 @@ To enable Valencia in gedit, select Edit->Preferences and the click on the
 Plugins tab. Find Valencia in the plugin list and check its checkbox, then click
 Close.
 
-Copyright 2009-2010 Yorba Foundation
+Copyright 2009-2011 Yorba Foundation
 
diff --git a/Makefile b/Makefile
index c9c3eef..a40da01 100644
--- a/Makefile
+++ b/Makefile
@@ -1,28 +1,30 @@
 PLUGIN = valencia
 
-# The version number appears here and also in valencia.gedit-plugin.
-VERSION = 0.3.0
+# The version number appears here and also in valencia.plugin.
+VERSION = 0.3.0+trunk
 
 VALAC = valac
 
 SOURCES = autocomplete.vala browser.vala expression.vala gtk_util.vala parser.vala program.vala \
           scanner.vala settings.vala util.vala valencia.vala
  
-PACKAGES = --pkg gedit-2.20 --pkg gee-1.0 --pkg gtk+-2.0 --pkg vala-1.0 --pkg vte
+PACKAGES = --pkg gedit --pkg gee-1.0 --pkg gtk+-3.0 --pkg gtksourceview-3.0 \
+           --pkg libvala-0.12 --pkg PeasGtk-1.0 --pkg vte-2.90
 
 PACKAGE_VERSIONS = \
-    gedit-2.20 >= 2.24.0 \
+    gedit >= 2.91.0 \
     gee-1.0 >= 0.1.3 \
-    gtk+-2.0 >= 2.14.4 \
-    vala-1.0 >= 0.7.10 \
-    vte >= 0.17.4
+    gtksourceview-3.0 >= 3.0.0 \
+    gtk+-3.0 >= 3.0.0 \
+    libvala-0.12 >= 0.11.0 \
+    vte-2.90 >= 0.27.90
 
-OUTPUTS = libvalencia.so valencia.gedit-plugin
+OUTPUTS = libvalencia.so valencia.plugin
 
 DIST_FILES = $(SOURCES) \
              Makefile \
              gedit-2.20.deps gedit-2.20.vapi valencia.png \
-             valencia.gedit-plugin valencia.gedit-plugin.m4 \
+             valencia.plugin valencia.plugin.m4 \
              AUTHORS COPYING INSTALL NEWS README THANKS
 DIST_TAR = $(PLUGIN)-$(VERSION).tar
 DIST_TAR_BZ2 = $(DIST_TAR).bz2
@@ -30,25 +32,25 @@ DIST_TAR_GZ = $(DIST_TAR).gz
 
 ICON_DIR = ~/.local/share/icons/hicolor/128x128/apps
 
-all: valencia.gedit-plugin libvalencia.so
-	
+all: valencia.plugin libvalencia.so
 
-valencia.gedit-plugin: valencia.gedit-plugin.m4 Makefile
-	m4 -DVERSION='$(VERSION)' valencia.gedit-plugin.m4 > valencia.gedit-plugin
+valencia.plugin: valencia.plugin.m4 Makefile
+	@ type m4 > /dev/null || ( echo 'm4 is missing and is required to build Valencia. ' ; exit 1 )
+	m4 -DVERSION='$(VERSION)' valencia.plugin.m4 > valencia.plugin
 
 libvalencia.so: $(SOURCES) Makefile
 	@ pkg-config --print-errors --exists '$(PACKAGE_VERSIONS)'
-	$(VALAC) $(VFLAGS) -X --shared -X -fPIC --vapidir=. $(PACKAGES) $(SOURCES) -o $@
+	$(VALAC) $(VFLAGS) -X --shared -X -fPIC --vapidir=vapi $(PACKAGES) $(SOURCES) -o $@
 
-install: libvalencia.so valencia.gedit-plugin
+install: libvalencia.so valencia.plugin
 	@ [ `whoami` != "root" ] || ( echo 'Run make install as yourself, not as root.' ; exit 1 )
-	mkdir -p ~/.gnome2/gedit/plugins
-	cp $(OUTPUTS) ~/.gnome2/gedit/plugins
+	mkdir -p ~/.local/share/gedit/plugins
+	cp $(OUTPUTS) ~/.local/share/gedit/plugins
 	mkdir -p $(ICON_DIR)
 	cp -p valencia.png $(ICON_DIR)
 
 uninstall:
-	rm -f $(foreach o, $(OUTPUTS), ~/.gnome2/gedit/plugins/$o)
+	rm -f $(foreach o, $(OUTPUTS), ~/.local/share/gedit/plugins/$o)
 	rm -f $(ICON_DIR)/valencia.png
 
 parser:  expression.vala parser.vala program.vala scanner.vala util.vala
@@ -63,5 +65,5 @@ dist: $(DIST_FILES)
 
 clean:
 	rm -f $(SOURCES:.vala=.c) $(SOURCES:.vala=.h) *.so
-	rm -f valencia.gedit-plugin
+	rm -f valencia.plugin
 
diff --git a/README b/README
index 6841c00..fad50e4 100644
--- a/README
+++ b/README
@@ -53,5 +53,5 @@ with a subject: line of "subscribe" (no quotes) to
 valencia-request@lists.yorba.org.
     
     
-Copyright 2009-2010 Yorba Foundation
+Copyright 2009-2011 Yorba Foundation
 
diff --git a/autocomplete.vala b/autocomplete.vala
index b55a7c2..97cc167 100644
--- a/autocomplete.vala
+++ b/autocomplete.vala
@@ -1,4 +1,4 @@
-/* Copyright 2009-2010 Yorba Foundation
+/* Copyright 2009-2011 Yorba Foundation
  *
  * This software is licensed under the GNU Lesser General Public License
  * (version 2.1 or later).  See the COPYING file in this distribution. 
@@ -20,7 +20,7 @@ class AutocompleteDialog : Object {
         visible = false;
         inserting_text = false;
         list = new ListViewString(Gtk.TreeViewColumnSizing.AUTOSIZE, 100);
-        list.row_activated += select_item;
+        list.row_activated.connect(select_item);
 
         window = new Gtk.Window(Gtk.WindowType.POPUP); 
         window.add(list.scrolled_window);
@@ -32,20 +32,6 @@ class AutocompleteDialog : Object {
       
         window.show_all();
         window.hide();
-
-        Signal.connect(window, "expose-event", (Callback) draw_callback, this);
-    }
-
-    static bool draw_callback(Gtk.Window window, Gdk.EventExpose event, AutocompleteDialog dialog) {
-        Gtk.paint_flat_box(dialog.window.style, dialog.window.window, 
-                           Gtk.StateType.NORMAL, Gtk.ShadowType.OUT, 
-                           null, dialog.window, "tooltip",
-                           dialog.window.allocation.x, dialog.window.allocation.y,
-                           dialog.window.allocation.width, dialog.window.allocation.height);
-
-        dialog.list.scrolled_window.expose_event(event);
-
-        return true;
     }
 
     unowned string? get_completion_target(Gtk.TextBuffer buffer) {
@@ -68,6 +54,8 @@ class AutocompleteDialog : Object {
     }
     
     string strip_completed_classnames(string list_name, string completion_target) {
+        string result = list_name;
+        
         string[] classnames = completion_target.split(".");
         int names = classnames.length;
         // If the last classname is not explicitly part of the class qualification, then it 
@@ -80,16 +68,16 @@ class AutocompleteDialog : Object {
 
             // If the name doesn't contain the current classname, it may be a namespace name that
             // isn't part of the list_name string - we shouldn't stop the comparison early
-            if (list_name.contains(name)) {
+            if (result.contains(name)) {
                 // Add one to the offset of a string to account for the "."
                 long offset = name.length;
                 if (offset > 0)
                     ++offset;
-                list_name = list_name.offset(offset);
+                result = result.substring(offset);
             }
         }
 
-        return list_name;
+        return result;
     }
 
     string parse_single_symbol(Symbol symbol, string? completion_target, bool constructor) {
diff --git a/browser.vala b/browser.vala
index 90ce68f..0500e57 100644
--- a/browser.vala
+++ b/browser.vala
@@ -1,4 +1,4 @@
-/* Copyright 2009-2010 Yorba Foundation
+/* Copyright 2009-2011 Yorba Foundation
  *
  * This software is licensed under the GNU Lesser General Public License
  * (version 2.1 or later).  See the COPYING file in this distribution. 
@@ -20,14 +20,14 @@ class SymbolBrowser {
         this.instance = instance;
 
         find_entry = new Gtk.Entry();
-        find_entry.activate += on_entry_activated;
-        find_entry.changed += on_text_changed;
-        find_entry.focus_in_event += on_receive_focus;
+        find_entry.activate.connect(on_entry_activated);
+        find_entry.changed.connect(on_text_changed);
+        find_entry.focus_in_event.connect(on_receive_focus);
 
         // A width of 175 pixels is a sane minimum; the user can always expand this to be bigger
         list = new ListViewString(Gtk.TreeViewColumnSizing.FIXED, 175);
-        list.row_activated += on_list_activated;
-        list.received_focus += on_list_receive_focus;
+        list.row_activated.connect(on_list_activated);
+        list.received_focus.connect(on_list_receive_focus);
 
         symbol_vbox = new Gtk.VBox(false, 6);
         symbol_vbox.pack_start(find_entry, false, false, 0);
@@ -35,17 +35,17 @@ class SymbolBrowser {
         symbol_vbox.show_all();
 
         weak Gedit.Panel panel = instance.window.get_side_panel();
-        panel.add_item_with_stock_icon(symbol_vbox, "Symbols", Gtk.STOCK_FIND);
+        panel.add_item_with_stock_icon(symbol_vbox, "symbols", "Symbols", Gtk.Stock.FIND);
         
-        panel.show += on_panel_open;
-        panel.hide += on_panel_hide;
+        panel.show.connect(on_panel_open);
+        panel.hide.connect(on_panel_hide);
     }
 
     void on_text_changed() {
         on_update_symbols();
     }
 
-    void on_panel_open(Gedit.Panel panel) {
+    void on_panel_open() {
         visible = true;
         on_receive_focus();
     }
@@ -82,7 +82,7 @@ class SymbolBrowser {
         Program program = Program.find_containing(document_path);
 
         if (program.is_parsing())
-            program.system_parse_complete += update_symbols;
+            program.system_parse_complete.connect(update_symbols);
         else update_symbols();
     }
 
diff --git a/expression.vala b/expression.vala
index 9c18b6d..832d8f0 100644
--- a/expression.vala
+++ b/expression.vala
@@ -1,4 +1,4 @@
-/* Copyright 2009-2010 Yorba Foundation
+/* Copyright 2009-2011 Yorba Foundation
  *
  * This software is licensed under the GNU Lesser General Public License
  * (version 2.1 or later).  See the COPYING file in this distribution. 
diff --git a/gedit-2.20.deps b/gedit-2.20.deps
deleted file mode 100644
index c6b39c6..0000000
--- a/gedit-2.20.deps
+++ /dev/null
@@ -1,3 +0,0 @@
-gtk+-2.0
-gtksourceview-2.0
-
diff --git a/gedit-2.20.vapi b/gedit-2.20.vapi
deleted file mode 100644
index 4665556..0000000
--- a/gedit-2.20.vapi
+++ /dev/null
@@ -1,770 +0,0 @@
-/* gedit-2.20.vapi generated by vapigen, do not modify. */
-
-[CCode (cprefix = "Gedit", lower_case_cprefix = "gedit_")]
-namespace Gedit {
-	[CCode (cheader_filename = "gedit/gedit-app.h")]
-	public class App : GLib.Object {
-		public unowned Gedit.Window create_window (Gdk.Screen screen);
-		public unowned Gedit.Window get_active_window ();
-		public static unowned Gedit.App get_default ();
-		public unowned GLib.List<Gedit.Document> get_documents ();
-		public Gedit.LockdownMask get_lockdown ();
-		public unowned GLib.List<Gedit.View> get_views ();
-		public unowned GLib.List<Gedit.Window> get_windows ();
-	}
-	[CCode (cheader_filename = "gedit/gedit-document.h")]
-	public class Document : Gtk.SourceBuffer {
-		[CCode (has_construct_function = false)]
-		public Document ();
-		public static GLib.Quark error_quark ();
-		public bool get_can_search_again ();
-		public unowned string get_content_type ();
-		public bool get_deleted ();
-		public bool get_enable_search_highlighting ();
-		public unowned Gedit.Encoding get_encoding ();
-		public unowned Gtk.SourceLanguage get_language ();
-		public unowned GLib.File get_location ();
-		public unowned string get_mime_type ();
-		public bool get_readonly ();
-		public unowned string get_search_text (uint flags);
-		public unowned string get_short_name_for_display ();
-		public unowned string get_uri ();
-		public unowned string get_uri_for_display ();
-		public bool goto_line (int line);
-		public bool goto_line_offset (int line, int line_offset);
-		public bool insert_file (Gtk.TextIter iter, string uri, Gedit.Encoding encoding);
-		public bool is_local ();
-		public bool is_untitled ();
-		public bool is_untouched ();
-		public void load (string uri, Gedit.Encoding encoding, int line_pos, bool create);
-		public bool load_cancel ();
-		public int replace_all (string find, string replace, uint flags);
-		public void save (Gedit.DocumentSaveFlags flags);
-		public void save_as (string uri, Gedit.Encoding encoding, Gedit.DocumentSaveFlags flags);
-		public bool search_backward (Gtk.TextIter start, Gtk.TextIter end, Gtk.TextIter match_start, Gtk.TextIter match_end);
-		public bool search_forward (Gtk.TextIter start, Gtk.TextIter end, Gtk.TextIter match_start, Gtk.TextIter match_end);
-		public void set_enable_search_highlighting (bool enable);
-		public void set_language (Gtk.SourceLanguage lang);
-		public void set_search_text (string text, uint flags);
-		public void set_uri (string uri);
-	}
-	[CCode (cheader_filename = "gedit/gedit-encodings.h")]
-	public class Encoding : GLib.Object {
-		public unowned Gedit.Encoding copy ();
-		public unowned string get_charset ();
-		public static unowned Gedit.Encoding get_current ();
-		public static unowned Gedit.Encoding get_from_charset (string charset);
-		public static unowned Gedit.Encoding get_from_index (int index);
-		public unowned string get_name ();
-		public static unowned Gedit.Encoding get_utf8 ();
-		public unowned string to_string ();
-	}
-	[CCode (cheader_filename = "gedit/gedit-encodings-option-menu.h")]
-	public class EncodingsOptionMenu : GLib.Object {
-		[CCode (type = "GtkWidget*", has_construct_function = false)]
-		public EncodingsOptionMenu (bool save_mode);
-		public unowned Gedit.Encoding get_selected_encoding ();
-		public void set_selected_encoding (Gedit.Encoding encoding);
-	}
-	[CCode (cheader_filename = "gedit/gedit-file-chooser-dialog.h")]
-	public class FileChooserDialog : Gtk.FileChooserDialog {
-		[CCode (type = "GtkWidget*", has_construct_function = false)]
-		public FileChooserDialog (string title, Gtk.FileChooserAction action, Gedit.Encoding encoding, ...);
-		public unowned Gedit.Encoding get_encoding ();
-		public void set_encoding (Gedit.Encoding encoding);
-	}
-	[CCode (cheader_filename = "gedit-2.20.h")]
-	public class Message : GLib.Object {
-		public void @get ();
-		public GLib.Type get_key_type (string key);
-		public void* get_message_type ();
-		public unowned string get_method ();
-		public unowned string get_object_path ();
-		public void get_valist (void* var_args);
-		public void get_value (string key, GLib.Value value);
-		public bool has_key (string key);
-		public void @set ();
-		public void set_valist (void* var_args);
-		public void set_value (string key, GLib.Value value);
-		public void set_valuesv (string keys, GLib.Value[] values);
-		public bool validate ();
-	}
-	[CCode (cheader_filename = "gedit-2.20.h")]
-	public class MessageBus : GLib.Object {
-		[CCode (has_construct_function = false)]
-		public MessageBus ();
-		public void block (uint id);
-		public void block_by_func (string object_path, string method, Gedit.MessageCallback callback, void* userdata);
-		public uint connect (string object_path, string method, Gedit.MessageCallback callback, void* userdata, GLib.DestroyNotify destroy_data);
-		public void disconnect (uint id);
-		public void disconnect_by_func (string object_path, string method, Gedit.MessageCallback callback, void* userdata);
-		public void @foreach (Gedit.MessageBusForeach func, void* userdata);
-		public static unowned Gedit.MessageBus get_default ();
-		public bool is_registered (string object_path, string method);
-		public unowned Gedit.MessageType lookup (string object_path, string method);
-		public unowned Gedit.MessageType register (string object_path, string method, uint num_optional);
-		public void send (string object_path, string method);
-		public void send_message (Gedit.Message message);
-		public void send_message_sync (Gedit.Message message);
-		public unowned Gedit.Message send_sync (string object_path, string method);
-		public void unblock (uint id);
-		public void unblock_by_func (string object_path, string method, Gedit.MessageCallback callback, void* userdata);
-		public void unregister (Gedit.MessageType message_type);
-		public void unregister_all (string object_path);
-	}
-	[CCode (ref_function = "gedit_message_type_ref", unref_function = "gedit_message_type_unref", cheader_filename = "gedit-2.20.h")]
-	public class MessageType : GLib.Object {
-		[CCode (has_construct_function = false)]
-		public MessageType (string object_path, string method, uint num_optional);
-		public void @foreach (Gedit.MessageTypeForeach func);
-		public unowned string get_method ();
-		public unowned string get_object_path ();
-		public static unowned string identifier (string object_path, string method);
-		public unowned Gedit.Message instantiate ();
-		public unowned Gedit.Message instantiate_valist (void* va_args);
-		public static bool is_supported (GLib.Type type);
-		public static bool is_valid_object_path (string object_path);
-		public GLib.Type lookup (string key);
-		public void @set (uint num_optional);
-		public void set_valist (uint num_optional, void* va_args);
-		[CCode (has_construct_function = false)]
-		public MessageType.valist (string object_path, string method, uint num_optional, void* va_args);
-	}
-	[CCode (cheader_filename = "gedit/gedit-notebook.h")]
-	public class Notebook : Gtk.Notebook {
-		[CCode (type = "GtkWidget*", has_construct_function = false)]
-		public Notebook ();
-		public void add_tab (Gedit.Tab tab, int position, bool jump_to);
-		public bool get_close_buttons_sensitive ();
-		public bool get_tab_drag_and_drop_enabled ();
-		public void move_tab (Gedit.Notebook dest, Gedit.Tab tab, int dest_position);
-		public void remove_all_tabs ();
-		public void remove_tab (Gedit.Tab tab);
-		public void reorder_tab (Gedit.Tab tab, int dest_position);
-		public void set_always_show_tabs (bool show_tabs);
-		public void set_close_buttons_sensitive (bool sensitive);
-		public void set_tab_drag_and_drop_enabled (bool enable);
-	}
-	[CCode (cheader_filename = "gedit/gedit-panel.h")]
-	public class Panel : Gtk.VBox {
-		[CCode (type = "GtkWidget*", has_construct_function = false)]
-		public Panel (Gtk.Orientation orientation);
-		public bool activate_item (Gtk.Widget item);
-		public void add_item (Gtk.Widget item, string name, Gtk.Widget? image);
-		public void add_item_with_stock_icon (Gtk.Widget item, string name, string stock_id);
-		public int get_n_items ();
-		public Gtk.Orientation get_orientation ();
-		public bool item_is_active (Gtk.Widget item);
-		public bool remove_item (Gtk.Widget item);
-	}
-	[CCode (cheader_filename = "gedit/gedit-plugin.h")]
-	public class Plugin : GLib.Object {
-		public virtual void activate (Gedit.Window window);
-		public virtual unowned Gtk.Widget? create_configure_dialog ();
-		public virtual void deactivate (Gedit.Window window);
-		public virtual unowned string get_data_dir ();
-		public virtual unowned string get_install_dir ();
-		public virtual bool is_configurable ();
-		public virtual void update_ui (Gedit.Window window);
-	}
-	[CCode (cheader_filename = "gedit/gedit-progress-message-area.h")]
-	public class ProgressMessageArea : Gtk.InfoBar {
-		[CCode (type = "GtkWidget*", has_construct_function = false)]
-		public ProgressMessageArea (string stock_id, string markup, bool has_cancel);
-		public void pulse ();
-		public void set_fraction (double fraction);
-		public void set_markup (string markup);
-		public void set_stock_image (string stock_id);
-		public void set_text (string text);
-	}
-	[CCode (cheader_filename = "gedit-2.20.h")]
-	public class StatusComboBox : GLib.Object {
-		[CCode (type = "GtkWidget*", has_construct_function = false)]
-		public StatusComboBox (string label);
-		public void add_item (Gtk.MenuItem item, string text);
-		public unowned Gtk.Label get_item_label ();
-		public unowned string get_item_text (Gtk.MenuItem item);
-		public unowned GLib.List get_items ();
-		public unowned string get_label ();
-		public void set_item (Gtk.MenuItem item);
-		public void set_item_text (Gtk.MenuItem item, string text);
-		public void set_label (string label);
-	}
-	[CCode (cheader_filename = "gedit/gedit-statusbar.h")]
-	public class Statusbar : Gtk.Statusbar {
-		[CCode (type = "GtkWidget*", has_construct_function = false)]
-		public Statusbar ();
-		public void clear_overwrite ();
-		public void flash_message (uint context_id, string format);
-		public void set_cursor_position (int line, int col);
-		public void set_overwrite (bool overwrite);
-		public void set_window_state (Gedit.WindowState state, int num_of_errors);
-	}
-	[CCode (cheader_filename = "gedit/gedit-tab.h")]
-	public class Tab : Gtk.VBox {
-		public weak Gtk.VBox vbox;
-		public bool get_auto_save_enabled ();
-		public int get_auto_save_interval ();
-		public unowned Gedit.Document get_document ();
-		public static unowned Gedit.Tab get_from_document (Gedit.Document doc);
-		public Gedit.TabState get_state ();
-		public unowned Gedit.View get_view ();
-		public void set_auto_save_enabled (bool enable);
-		public void set_auto_save_interval (int interval);
-	}
-	[CCode (cheader_filename = "gedit/gedit-view.h")]
-	public class View : Gtk.SourceView {
-		[CCode (type = "GtkWidget*", has_construct_function = false)]
-		public View (Gedit.Document doc);
-		public void copy_clipboard ();
-		public void cut_clipboard ();
-		public void delete_selection ();
-		public void paste_clipboard ();
-		public void scroll_to_cursor ();
-		public void select_all ();
-		public void set_font (bool def, string font_name);
-	}
-	[CCode (cheader_filename = "gedit/gedit-window.h")]
-	public class Window : Gtk.Window {
-		public void close_all_tabs ();
-		public void close_tab (Gedit.Tab tab);
-		public void close_tabs (GLib.List<Gedit.Tab> tabs);
-		public unowned Gedit.Tab create_tab (bool jump_to);
-		public unowned Gedit.Tab create_tab_from_uri (string uri, Gedit.Encoding? encoding, int line_pos, bool create, bool jump_to);
-		public unowned Gedit.Document get_active_document ();
-		public unowned Gedit.Tab get_active_tab ();
-		public unowned Gedit.View get_active_view ();
-		public unowned Gedit.Panel get_bottom_panel ();
-		public unowned GLib.List<Gedit.Document> get_documents ();
-		public unowned Gtk.WindowGroup get_group ();
-		public unowned Gedit.MessageBus get_message_bus ();
-		public unowned Gedit.Panel get_side_panel ();
-		public Gedit.WindowState get_state ();
-		public unowned Gtk.Widget get_statusbar ();
-		public unowned Gedit.Tab get_tab_from_location (GLib.File location);
-		public unowned Gedit.Tab get_tab_from_uri (string uri);
-		public unowned Gtk.UIManager get_ui_manager ();
-		public unowned GLib.List<Gedit.Document> get_unsaved_documents ();
-		public unowned GLib.List<Gedit.View> get_views ();
-		public void set_active_tab (Gedit.Tab tab);
-	}
-	[CCode (cprefix = "GEDIT_CONVERT_ERROR_AUTO_DETECTION_", has_type_id = "0", cheader_filename = "gedit/gedit-convert.h")]
-	public enum ConvertError {
-		FAILED
-	}
-	[CCode (cprefix = "GEDIT_", has_type_id = "0", cheader_filename = "gedit/gedit-debug.h")]
-	public enum DebugSection {
-		NO_DEBUG,
-		DEBUG_VIEW,
-		DEBUG_SEARCH,
-		DEBUG_PRINT,
-		DEBUG_PREFS,
-		DEBUG_PLUGINS,
-		DEBUG_TAB,
-		DEBUG_DOCUMENT,
-		DEBUG_COMMANDS,
-		DEBUG_APP,
-		DEBUG_SESSION,
-		DEBUG_UTILS,
-		DEBUG_METADATA,
-		DEBUG_WINDOW,
-		DEBUG_LOADER,
-		DEBUG_SAVER
-	}
-	[CCode (cprefix = "GEDIT_DOCUMENT_SAVE_", has_type_id = "0", cheader_filename = "gedit/gedit-document.h")]
-	public enum DocumentSaveFlags {
-		IGNORE_MTIME,
-		IGNORE_BACKUP,
-		PRESERVE_BACKUP
-	}
-	[CCode (cprefix = "GEDIT_LOCKDOWN_", has_type_id = "0", cheader_filename = "gedit/gedit-app.h")]
-	public enum LockdownMask {
-		COMMAND_LINE,
-		PRINTING,
-		PRINT_SETUP,
-		SAVE_TO_DISK,
-		ALL
-	}
-	[CCode (cprefix = "GEDIT_SEARCH_", has_type_id = "0", cheader_filename = "gedit/gedit-document.h")]
-	public enum SearchFlags {
-		DONT_SET_FLAGS,
-		ENTIRE_WORD,
-		CASE_SENSITIVE
-	}
-	[CCode (cprefix = "GEDIT_TAB_", has_type_id = "0", cheader_filename = "gedit/gedit-tab.h")]
-	public enum TabState {
-		STATE_NORMAL,
-		STATE_LOADING,
-		STATE_REVERTING,
-		STATE_SAVING,
-		STATE_PRINTING,
-		STATE_PRINT_PREVIEWING,
-		STATE_SHOWING_PRINT_PREVIEW,
-		STATE_GENERIC_NOT_EDITABLE,
-		STATE_LOADING_ERROR,
-		STATE_REVERTING_ERROR,
-		STATE_SAVING_ERROR,
-		STATE_GENERIC_ERROR,
-		STATE_CLOSING,
-		STATE_EXTERNALLY_MODIFIED_NOTIFICATION,
-		NUM_OF_STATES
-	}
-	[CCode (cprefix = "GEDIT_TOOLBAR_", has_type_id = "0", cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public enum ToolbarSetting {
-		SYSTEM,
-		ICONS,
-		ICONS_AND_TEXT,
-		ICONS_BOTH_HORIZ
-	}
-	[CCode (cprefix = "GEDIT_WINDOW_STATE_", has_type_id = "0", cheader_filename = "gedit/gedit-window.h")]
-	public enum WindowState {
-		NORMAL,
-		SAVING,
-		PRINTING,
-		LOADING,
-		ERROR,
-		SAVING_SESSION
-	}
-	[CCode (cheader_filename = "gedit-2.20.h", has_target = false)]
-	public delegate void MessageBusForeach (Gedit.MessageType message_type, void* userdata);
-	[CCode (cheader_filename = "gedit-2.20.h", has_target = false)]
-	public delegate void MessageCallback (Gedit.MessageBus bus, Gedit.Message message, void* userdata);
-	[CCode (cheader_filename = "gedit-2.20.h")]
-	public delegate void MessageTypeForeach (string key, GLib.Type type, bool required);
-	[CCode (cheader_filename = "gedit-2.20.h", has_target = false)]
-	public delegate unowned GLib.MountOperation MountOperationFactory (Gedit.Document doc, void* userdata);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const string BASE_KEY;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_AUTO_INDENT;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_AUTO_SAVE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_AUTO_SAVE_INTERVAL;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_BOTTOM_PANEL_VISIBLE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_BRACKET_MATCHING;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_CREATE_BACKUP_COPY;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_DISPLAY_LINE_NUMBERS;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_DISPLAY_RIGHT_MARGIN;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_HIGHLIGHT_CURRENT_LINE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_INSERT_SPACES;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_MAX_RECENTS;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_PRINT_HEADER;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_PRINT_LINE_NUMBERS;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_PRINT_SYNTAX;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const string GPM_DEFAULT_PRINT_WRAP_MODE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_RESTORE_CURSOR_POSITION;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_RIGHT_MARGIN_POSITION;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_SEARCH_HIGHLIGHTING_ENABLE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_SIDE_PANE_VISIBLE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const string GPM_DEFAULT_SMART_HOME_END;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const string GPM_DEFAULT_SOURCE_STYLE_SCHEME;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_STATUSBAR_VISIBLE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_SYNTAX_HL_ENABLE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_TABS_SIZE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const string GPM_DEFAULT_TOOLBAR_BUTTONS_STYLE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_TOOLBAR_SHOW_TOOLTIPS;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_TOOLBAR_VISIBLE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_UNDO_ACTIONS_LIMIT;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const int GPM_DEFAULT_USE_DEFAULT_FONT;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const string GPM_DEFAULT_WRAP_MODE;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const string GPM_LOCKDOWN_DIR;
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public const string GPM_SYSTEM_FONT;
-	[CCode (cheader_filename = "gedit/gedit-commands.h")]
-	public static void commands_load_uri (Gedit.Window window, string uri, Gedit.Encoding encoding, int line_pos);
-	[CCode (cheader_filename = "gedit/gedit-commands.h")]
-	public static int commands_load_uris (Gedit.Window window, GLib.SList uris, Gedit.Encoding encoding, int line_pos);
-	[CCode (cheader_filename = "gedit/gedit-commands.h")]
-	public static void commands_save_all_documents (Gedit.Window window);
-	[CCode (cheader_filename = "gedit/gedit-commands.h")]
-	public static void commands_save_document (Gedit.Window window, Gedit.Document document);
-	[CCode (cheader_filename = "gedit/gedit-convert.h")]
-	public static GLib.Quark convert_error_quark ();
-	[CCode (cheader_filename = "gedit/gedit-convert.h")]
-	public static unowned string convert_from_utf8 (string content, size_t len, Gedit.Encoding encoding, size_t new_len) throws GLib.Error;
-	[CCode (cheader_filename = "gedit/gedit-convert.h")]
-	public static unowned string convert_to_utf8 (string content, size_t len, out unowned Gedit.Encoding encoding, size_t new_len) throws GLib.Error;
-	[CCode (cheader_filename = "gedit/gedit-debug.h")]
-	public static void debug (Gedit.DebugSection section, string file, int line, string function);
-	[CCode (cheader_filename = "gedit/gedit-debug.h")]
-	public static void debug_init ();
-	[CCode (cheader_filename = "gedit/gedit-debug.h")]
-	public static void debug_message (Gedit.DebugSection section, string file, int line, string function, string format, ...);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned Gtk.Widget dialog_add_button (Gtk.Dialog dialog, string text, string stock_id, int response_id);
-	[CCode (cname = "g_utf8_caselessnmatch", cheader_filename = "gedit/gedit-utils.h")]
-	public static bool g_utf8_caselessnmatch (string s1, string s2, ssize_t n1, ssize_t n2);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string gdk_color_to_string (Gdk.Color color);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned Gtk.Widget gtk_button_new_with_stock_icon (string label, string stock_id);
-	[CCode (cheader_filename = "gedit/gedit-help.h")]
-	public static bool help_display (string name, string link_id);
-	[CCode (cheader_filename = "gedit/gedit-metadata-manager.h")]
-	public static unowned string metadata_manager_get (string uri, string key);
-	[CCode (cheader_filename = "gedit/gedit-metadata-manager.h")]
-	public static void metadata_manager_set (string uri, string key, string value);
-	[CCode (cheader_filename = "gedit/gedit-metadata-manager.h")]
-	public static void metadata_manager_shutdown ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_active_file_filter_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_active_plugins_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_app_init ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_app_shutdown ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_auto_indent_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_auto_save_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_auto_save_interval_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_bottom_panel_active_page_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_bottom_panel_size_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_bottom_panel_visible_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_bracket_matching_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_create_backup_copy_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_display_line_numbers_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_display_right_margin_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_editor_font_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_enable_search_highlighting_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_enable_syntax_highlighting_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_active_file_filter ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned GLib.SList prefs_manager_get_active_plugins ();
-	[CCode (cheader_filename = "gedit-2.20.h")]
-	public static unowned GLib.SList<Gedit.Encoding> prefs_manager_get_auto_detected_encodings ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_auto_indent ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_auto_save ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_auto_save_interval ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned string prefs_manager_get_backup_extension ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_bottom_panel_active_page ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_bottom_panel_size ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_bottom_panel_visible ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_bracket_matching ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_create_backup_copy ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_default_bottom_panel_size ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned string prefs_manager_get_default_print_font_body ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned string prefs_manager_get_default_print_font_header ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned string prefs_manager_get_default_print_font_numbers ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_default_side_panel_size ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_get_default_window_size (int width, int height);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_display_line_numbers ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_display_right_margin ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned string prefs_manager_get_editor_font ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_enable_search_highlighting ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_enable_syntax_highlighting ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_highlight_current_line ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_insert_spaces ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static Gedit.LockdownMask prefs_manager_get_lockdown ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_max_recents ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned string prefs_manager_get_print_font_body ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned string prefs_manager_get_print_font_header ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned string prefs_manager_get_print_font_numbers ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_print_header ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_print_line_numbers ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_print_syntax_hl ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static Gtk.WrapMode prefs_manager_get_print_wrap_mode ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_restore_cursor_position ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_right_margin_position ();
-	[CCode (cheader_filename = "gedit-2.20.h")]
-	public static unowned GLib.SList<Gedit.Encoding> prefs_manager_get_shown_in_menu_encodings ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_side_pane_visible ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_side_panel_active_page ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_side_panel_size ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static Gtk.SourceSmartHomeEndType prefs_manager_get_smart_home_end ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned string prefs_manager_get_source_style_scheme ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_statusbar_visible ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static unowned string prefs_manager_get_system_font ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_tabs_size ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static Gedit.ToolbarSetting prefs_manager_get_toolbar_buttons_style ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_toolbar_visible ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_undo_actions_limit ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_get_use_default_font ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_get_window_size (int width, int height);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static int prefs_manager_get_window_state ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static Gtk.WrapMode prefs_manager_get_wrap_mode ();
-	[CCode (cheader_filename = "gedit-2.20.h")]
-	public static unowned GLib.SList<string> prefs_manager_get_writable_vfs_schemes ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_highlight_current_line_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_init ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_insert_spaces_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_print_font_body_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_print_font_header_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_print_font_numbers_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_print_header_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_print_line_numbers_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_print_syntax_hl_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_print_wrap_mode_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_right_margin_position_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_active_file_filter (int id);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_active_plugins (GLib.SList plugins);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_auto_indent (bool ai);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_auto_save (bool @as);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_auto_save_interval (int asi);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_bottom_panel_active_page (int id);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_bottom_panel_size (int ps);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_bottom_panel_visible (bool tv);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_bracket_matching (bool bm);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_create_backup_copy (bool cbc);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_display_line_numbers (bool dln);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_display_right_margin (bool drm);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_editor_font (string font);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_enable_search_highlighting (bool esh);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_enable_syntax_highlighting (bool esh);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_highlight_current_line (bool hl);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_insert_spaces (bool ai);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_print_font_body (string font);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_print_font_header (string font);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_print_font_numbers (string font);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_print_header (bool ph);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_print_line_numbers (int pln);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_print_syntax_hl (bool ps);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_print_wrap_mode (Gtk.WrapMode pwm);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_right_margin_position (int rmp);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_shown_in_menu_encodings (GLib.SList<Gedit.Encoding> encs);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_side_pane_visible (bool tv);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_side_panel_active_page (int id);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_side_panel_size (int ps);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_smart_home_end (Gtk.SourceSmartHomeEndType smart_he);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_source_style_scheme (string scheme);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_statusbar_visible (bool sv);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_tabs_size (int ts);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_toolbar_buttons_style (Gedit.ToolbarSetting tbs);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_toolbar_visible (bool tv);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_undo_actions_limit (int ual);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_use_default_font (bool udf);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_window_size (int width, int height);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_window_state (int ws);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_set_wrap_mode (Gtk.WrapMode wp);
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_shown_in_menu_encodings_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static void prefs_manager_shutdown ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_side_pane_visible_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_side_panel_active_page_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_side_panel_size_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_smart_home_end_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_source_style_scheme_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_statusbar_visible_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_tabs_size_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_toolbar_buttons_style_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_toolbar_visible_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_undo_actions_limit_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_use_default_font_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_window_size_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_window_state_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-prefs-manager.h")]
-	public static bool prefs_manager_wrap_mode_can_set ();
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static void utils_activate_url (Gtk.AboutDialog about, string url, void* data);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_basename_for_display (string uri);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static bool utils_decode_uri (string uri, string scheme, string user, string port, string host, string path);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_drop_get_uris (Gtk.SelectionData selection_data);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_escape_search_text (string text);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_escape_underscores (string text, ssize_t length);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static bool utils_file_has_parent (GLib.File gfile);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static void utils_get_current_viewport (Gdk.Screen screen, int x, int y);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static uint utils_get_current_workspace (Gdk.Screen screen);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static bool utils_get_ui_objects (string filename, string root_objects, out unowned Gtk.Widget error_widget, string object_name);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static uint utils_get_window_workspace (Gtk.Window gtkwindow);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static bool utils_is_valid_uri (string uri);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_location_get_dirname_for_display (GLib.File location);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_make_canonical_uri_from_shell_arg (string str);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_make_valid_utf8 (string name);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static void utils_menu_position_under_tree_view (Gtk.Menu menu, int x, int y, bool push_in);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static void utils_menu_position_under_widget (Gtk.Menu menu, int x, int y, bool push_in);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_replace_home_dir_with_tilde (string uri);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static void utils_set_atk_name_description (Gtk.Widget widget, string name, string description);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static void utils_set_atk_relation (Gtk.Widget obj1, Gtk.Widget obj2, Atk.RelationType rel_type);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_str_end_truncate (string str, uint truncate_length);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_str_middle_truncate (string str, uint truncate_length);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_unescape_search_text (string text);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static bool utils_uri_exists (string text_uri);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_uri_for_display (string uri);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static unowned string utils_uri_get_dirname (string uri);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static bool utils_uri_has_file_scheme (string uri);
-	[CCode (cheader_filename = "gedit/gedit-utils.h")]
-	public static bool utils_uri_has_writable_scheme (string uri);
-	[CCode (cheader_filename = "gedit/gedit-debug.h")]
-	public static void warning (string format, ...);
-}
diff --git a/gtk_util.vala b/gtk_util.vala
index 6a0fc83..2382cef 100644
--- a/gtk_util.vala
+++ b/gtk_util.vala
@@ -1,4 +1,4 @@
-/* Copyright 2009-2010 Yorba Foundation
+/* Copyright 2009-2011 Yorba Foundation
  *
  * This software is licensed under the GNU Lesser General Public License
  * (version 2.1 or later).  See the COPYING file in this distribution. 
@@ -50,7 +50,7 @@ Gtk.TextIter iter_at_line_offset(Gtk.TextBuffer buffer, int line, int offset) {
     return ret;
 }
 
-unowned string buffer_contents(Gtk.TextBuffer buffer) {
+string buffer_contents(Gtk.TextBuffer buffer) {
     Gtk.TextIter start;
     Gtk.TextIter end;
     buffer.get_bounds(out start, out end);
@@ -94,15 +94,13 @@ void get_coords_at_buffer_offset(Gedit.Window window, int offset, bool above, bo
     int win_x, win_y;
     active_view.buffer_to_window_coords(Gtk.TextWindowType.WIDGET, rect.x, rect.y, 
                                         out win_x, out win_y);
-    int widget_x = active_view.allocation.x;
-    int widget_y = active_view.allocation.y; 
     int orig_x, orig_y;
-    window.window.get_origin(out orig_x, out orig_y);
+    active_view.get_window(Gtk.TextWindowType.WIDGET).get_origin(out orig_x, out orig_y);
 
-    x = win_x + widget_x + orig_x;
-    y = win_y + widget_y + orig_y;
+    x = win_x + orig_x;
+    y = win_y + orig_y;
     x += beside ? rect.height : 0; 
-    y -= above ? rect.height : 0;
+    y -= above ? (rect.height + 3) : 0;
 }
 
 ////////////////////////////////////////////////////////////
@@ -159,7 +157,7 @@ class Tooltip {
         doc.delete_mark(method_mark);
         
         visible = false;
-        window.hide_all();
+        window.hide();
     }
     
     public bool is_visible() {
@@ -279,7 +277,7 @@ class ListViewString : Object {
         treeview = new Gtk.TreeView.with_model(list);
         treeview.append_column(column_view);
         treeview.headers_visible = false;
-        treeview.focus_in_event += on_received_focus;
+        treeview.focus_in_event.connect(on_received_focus);
 
         scrolled_window = new Gtk.ScrolledWindow(null, null); 
         scrolled_window.hscrollbar_policy = Gtk.PolicyType.NEVER;
@@ -511,19 +509,20 @@ class ListViewString : Object {
 //// Gedit helper functions ////
 
 string? document_filename(Gedit.Document document) {
-    string uri = document.get_uri();
-    if (uri == null)
+    File location = document.get_location();
+    if (location == null)
         return null;
+        
     try {
-        return Filename.from_uri(uri);
+        return Filename.from_uri(location.get_uri());
     } catch (ConvertError e) { return null; }
 }
 
 Gedit.Tab? find_tab(string filename, out Gedit.Window window) {
-    string uri = filename_to_uri(filename);
+    File location = File.new_for_path(filename);
     
     foreach (Gedit.Window w in Gedit.App.get_default().get_windows()) {
-        Gedit.Tab tab = w.get_tab_from_uri(uri);
+        Gedit.Tab tab = w.get_tab_from_location(location);
         if (tab != null) {
             window = w;
             return tab;
diff --git a/parser.vala b/parser.vala
index c0cf480..c25935d 100644
--- a/parser.vala
+++ b/parser.vala
@@ -1,4 +1,4 @@
-/* Copyright 2009-2010 Yorba Foundation
+/* Copyright 2009-2011 Yorba Foundation
  *
  * This software is licensed under the GNU Lesser General Public License
  * (version 2.1 or later).  See the COPYING file in this distribution. 
@@ -300,7 +300,8 @@ public class Parser : Object {
         } while (t != Token.LEFT_BRACE && t != Token.SEMICOLON);
 
         // Take the string from the return type all the way to the last ')'
-        m.update_prototype(input.ndup((char *) scanner.get_start() - (char *) input));
+        long n = (long) ((char *) scanner.get_start() - (char *) input);
+        m.update_prototype(input.substring(0, n));
         
         if (t == Token.LEFT_BRACE)
             m.body = parse_block();
@@ -368,6 +369,7 @@ public class Parser : Object {
     bool is_modifier(Token t) {
         switch (t) {
             case Token.ABSTRACT:
+            case Token.ASYNC:
             case Token.CONST:
             case Token.EXTERN:
             case Token.INLINE:
diff --git a/program.vala b/program.vala
index cb1d9e5..f2206ae 100644
--- a/program.vala
+++ b/program.vala
@@ -1,4 +1,4 @@
-/* Copyright 2009-2010 Yorba Foundation
+/* Copyright 2009-2011 Yorba Foundation
  *
  * This software is licensed under the GNU Lesser General Public License
  * (version 2.1 or later).  See the COPYING file in this distribution. 
@@ -1148,15 +1148,31 @@ public class Program : Object {
         top_directory = Path.get_dirname(makefile.path);
     }
 
-    string get_system_vapi_directory() {
+    string get_versioned_vapi_directory() {
         // Sort of a hack to get the path to the system vapi file directory. Gedit may hang or 
         // crash if the vala compiler .so is not present...
-        string[] null_dirs = {};
         Vala.CodeContext context = new Vala.CodeContext();
-        string path = context.get_package_path("gobject-2.0", null_dirs);
+        string path = context.get_vapi_path("gobject-2.0");
         return Path.get_dirname(path);
     }
-    
+
+    Gee.ArrayList<string> get_unversioned_vapi_directories() {
+        Gee.ArrayList<string> valid_data_dirs = new Gee.ArrayList<string>();
+        foreach (unowned string data_dir in Environment.get_system_data_dirs()) {
+            string temp_path = Path.build_filename(data_dir, "vala", "vapi");
+            if (FileUtils.test(temp_path, FileTest.EXISTS)) {
+                valid_data_dirs.add(temp_path);
+            }
+        }
+        return valid_data_dirs;
+    }
+
+    Gee.ArrayList<string> get_system_vapi_directories() {
+        Gee.ArrayList<string> directories = get_unversioned_vapi_directories();
+        directories.add(get_versioned_vapi_directory());
+        return directories;
+    }
+
     void finish_local_parse() {
         parsing = false;
         local_parse_complete();
@@ -1168,11 +1184,12 @@ public class Program : Object {
     bool parse_local_vala_files_idle_callback() {
         if (sourcefile_paths.is_empty) {
             // Don't parse system files locally!
-            string system_directory = get_system_vapi_directory();
-            if (top_directory == system_directory || 
-                (recursive_project && dir_has_parent(system_directory, top_directory))) {
-                finish_local_parse();
-                return false;
+            foreach (string system_directory in get_system_vapi_directories()) {
+                if (top_directory == system_directory || 
+                    (recursive_project && dir_has_parent(system_directory, top_directory))) {
+                    finish_local_parse();
+                    return false;
+                }
             }
             
             cache_source_paths_in_directory(top_directory, recursive_project);
@@ -1191,8 +1208,9 @@ public class Program : Object {
 
     bool parse_system_vala_files_idle_callback() {
         if (sourcefile_paths.size == 0) {
-            string system_directory = get_system_vapi_directory();
-            cache_source_paths_in_directory(system_directory, true);
+            foreach (string system_directory in get_system_vapi_directories()) {
+                cache_source_paths_in_directory(system_directory, true);
+            }
         }
 
         for (int i = 0; i < 3; ++i) {
@@ -1287,7 +1305,7 @@ public class Program : Object {
 
         // Only begin parsing vapi files after the local vapi files have been parsed        
         if (is_parsing()) {
-            local_parse_complete += parse_system_vapi_files;
+            local_parse_complete.connect(parse_system_vapi_files);
         } else {
             parsing = true;
             parse_list_index = 0;
diff --git a/scanner.vala b/scanner.vala
index c460c64..ddc120e 100644
--- a/scanner.vala
+++ b/scanner.vala
@@ -1,4 +1,4 @@
-/* Copyright 2009-2010 Yorba Foundation
+/* Copyright 2009-2011 Yorba Foundation
  *
  * This software is licensed under the GNU Lesser General Public License
  * (version 2.1 or later).  See the COPYING file in this distribution. 
@@ -19,9 +19,9 @@ enum Token {
     HASH, LEFT_PAREN, RIGHT_PAREN, PERIOD, QUESTION_MARK, SEMICOLON, LESS_THAN, GREATER_THAN,
 
     // keywords
-    ABSTRACT, BASE, CLASS, CONST, CONSTRUCT, DELEGATE, ELSE, ENUM, EXTERN, FOR, FOREACH, IF, INLINE, 
-    INTERFACE, INTERNAL, NAMESPACE, NEW, OUT, OVERRIDE, OWNED, PRIVATE, PROTECTED, PUBLIC, REF, 
-    RETURN, SIGNAL, STATIC, STRUCT, THIS, UNOWNED, USING, VIRTUAL, WEAK, WHILE
+    ABSTRACT, ASYNC, BASE, CLASS, CONST, CONSTRUCT, DELEGATE, ELSE, ENUM, EXTERN, FOR, FOREACH, IF,
+    INLINE, INTERFACE, INTERNAL, NAMESPACE, NEW, OUT, OVERRIDE, OWNED, PRIVATE, PROTECTED, PUBLIC,
+    REF, RETURN, SIGNAL, STATIC, STRUCT, THIS, UNOWNED, USING, VIRTUAL, WEAK, WHILE
 }
 
 struct Keyword {
@@ -31,6 +31,7 @@ struct Keyword {
 
 const Keyword[] keywords = {
     { "abstract", Token.ABSTRACT },
+    { "async", Token.ASYNC },
     { "base", Token.BASE },
     { "class", Token.CLASS },
     { "const", Token.CONST },
@@ -299,8 +300,8 @@ class Scanner : Object {
 
     // Return the source text of the last token retrieved.
     public string val() {
-        size_t bytes = (char *) end_char - (char *) start_char;
-        return start_char.ndup(bytes);
+        long bytes = (long) ((char *) end_char - (char *) start_char);
+        return start_char.substring(0, bytes);
     }
 
     public unowned string get_start() {
diff --git a/settings.vala b/settings.vala
index b4fafee..12175de 100644
--- a/settings.vala
+++ b/settings.vala
@@ -1,4 +1,4 @@
-/* Copyright 2009-2010 Yorba Foundation
+/* Copyright 2009-2011 Yorba Foundation
  *
  * This software is licensed under the GNU LGPL (version 2.1 or later).
  * See the COPYING file in this distribution. 
@@ -21,14 +21,14 @@ class ProjectSettingsDialog : Object {
         // Window creation
         Gtk.Label build_command_label = new Gtk.Label("Build command:");
         build_entry = new Gtk.Entry();
-        build_entry.activate += on_entry_activated;
+        build_entry.activate.connect(on_entry_activated);
         
         Gtk.Alignment align_build_label = new Gtk.Alignment(0.0f, 0.5f, 0.0f, 0.0f);
         align_build_label.add(build_command_label);
 
         Gtk.Label clean_command_label = new Gtk.Label("Clean command:");
         clean_entry = new Gtk.Entry();
-        clean_entry.activate += on_entry_activated;
+        clean_entry.activate.connect(on_entry_activated);
         
         Gtk.Alignment align_clean_label = new Gtk.Alignment(0.0f, 0.5f, 0.0f, 0.0f);
         align_clean_label.add(clean_command_label);
@@ -52,15 +52,16 @@ class ProjectSettingsDialog : Object {
 
         dialog = new Gtk.Dialog.with_buttons("Settings", parent_win, Gtk.DialogFlags.MODAL |
                                              Gtk.DialogFlags.DESTROY_WITH_PARENT, 
-                                             Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, 
-                                             Gtk.STOCK_OK, Gtk.ResponseType.OK, null);
+                                             Gtk.Stock.CANCEL, Gtk.ResponseType.CANCEL, 
+                                             Gtk.Stock.OK, Gtk.ResponseType.OK, null);
         dialog.set_default_response(Gtk.ResponseType.OK);
         dialog.set_default_size(350, 10);
-        dialog.delete_event += dialog.hide_on_delete;
+        dialog.delete_event.connect(dialog.hide_on_delete);
 
-        dialog.vbox.pack_start(alignment_box, false, false, 0);
+        Gtk.Box content_area = (Gtk.Box) dialog.get_content_area();
+        content_area.pack_start(alignment_box, false, false, 0);
         // Make all children visible by default
-        dialog.vbox.show_all();
+        content_area.show_all();
     }
 
     void on_entry_activated() {
diff --git a/util.vala b/util.vala
index 7ec5ae7..b60f500 100644
--- a/util.vala
+++ b/util.vala
@@ -1,4 +1,4 @@
-/* Copyright 2009-2010 Yorba Foundation
+/* Copyright 2009-2011 Yorba Foundation
  *
  * This software is licensed under the GNU Lesser General Public License
  * (version 2.1 or later).  See the COPYING file in this distribution. 
@@ -8,6 +8,15 @@ using Gee;
 
 extern void qsort(void *p, size_t num, size_t size, GLib.CompareFunc func);
 
+//// string functions ////
+
+// Return the index of the next UTF-8 character after the character at index i.
+public long next_utf8_char(string s, long i) {
+    char *p = (char *) s + i;
+    unowned string t = ((string) p).next_char();
+    return (long) ((char *) t - (char *) s);
+}
+
 //// Helper data structures ////
 
 class Stack<G> : GLib.Object {
@@ -54,13 +63,7 @@ int compare_string(void *a, void *b) {
     char **a_string = a;
     char **b_string = b;
     
-    return strcmp(*a_string, *b_string);
-}
-
-string? filename_to_uri(string filename) {
-    try {
-        return Filename.to_uri(filename);
-    } catch (ConvertError e) { return null; }
+    return strcmp((string) (*a_string), (string) (*b_string));
 }
 
 void make_pipe(int fd, IOFunc func) throws IOChannelError {
diff --git a/valencia.gedit-plugin.m4 b/valencia.gedit-plugin.m4
deleted file mode 100644
index 0431531..0000000
--- a/valencia.gedit-plugin.m4
+++ /dev/null
@@ -1,11 +0,0 @@
-[Gedit Plugin]
-Module=valencia
-IAge=2
-Name=Valencia
-Version=VERSION
-Description=gedit extensions for Vala
-Icon=valencia
-Authors=Adam Dingle <adam@yorba.org>\nReuben Dunnington<reuben@yorba.org>
-Copyright=Copyright 2009-2010 Yorba Foundation
-Website=http://yorba.org/valencia
-
diff --git a/valencia.plugin.m4 b/valencia.plugin.m4
new file mode 100644
index 0000000..8f98fef
--- /dev/null
+++ b/valencia.plugin.m4
@@ -0,0 +1,11 @@
+[Plugin]
+Module=valencia
+IAge=3
+Name=Valencia
+Version=VERSION
+Description=gedit extensions for Vala
+Icon=valencia
+Authors=Adam Dingle <adam@yorba.org>\nReuben Dunnington<reuben@yorba.org>
+Copyright=Copyright 2009-2011 Yorba Foundation
+Website=http://yorba.org/valencia
+
diff --git a/valencia.vala b/valencia.vala
index 2d44c35..bcf0008 100644
--- a/valencia.vala
+++ b/valencia.vala
@@ -1,4 +1,4 @@
-/* Copyright 2009-2010 Yorba Foundation
+/* Copyright 2009-2011 Yorba Foundation
  *
  * This software is licensed under the GNU Lesser General Public License
  * (version 2.1 or later).  See the COPYING file in this distribution. 
@@ -8,7 +8,7 @@ using Gee;
 using Vte;
 using Valencia;
 
-abstract class Destination : Object {
+public abstract class Destination : Object {
     public abstract void get_range(Gtk.TextBuffer buffer,
                                    out Gtk.TextIter start, out Gtk.TextIter end);
 }
@@ -72,17 +72,24 @@ class ScanInfo : Object {
         this.parse_info = parse_info;
         cursor_pos = cursor_position;
     }
-    
+     
     public ScanInfo.empty() { }
     
     public Expression inner() { return parse_info.inner; }
     
     public Expression outer() { return parse_info.outer; }
 }
+  
+public class Instance : Peas.ExtensionBase, Gedit.WindowActivatable {
+    static Gee.ArrayList<Instance> instances = new Gee.ArrayList<Instance>();
 
-class Instance : Object {
-    public Gedit.Window window;
-    Plugin plugin;
+	Gedit.Window _window;
+
+	public Gedit.Window window {
+	    construct { _window = value; }
+	    owned get { return _window; }
+	}
+    
     Program last_program_to_build;
 
     Gtk.ActionGroup action_group;
@@ -160,19 +167,21 @@ class Instance : Object {
     static HashMap<weak Gedit.Document, bool> documents_modified_state = 
         new HashMap<weak Gedit.Document, bool>();
 
+    Gedit.View view_to_scroll;
+   
     // Menu item entries
     const Gtk.ActionEntry[] entries = {
         { "SearchGoToDefinition", null, "Go to _Definition", "F12",
           "Jump to a symbol's definition", on_go_to_definition },
-        { "SearchFindSymbol", Gtk.STOCK_FIND, "Find _Symbol...", "<ctrl><alt>s",
+        { "SearchFindSymbol", Gtk.Stock.FIND, "Find _Symbol...", "<ctrl><alt>s",
           "Search for a symbol by name", on_find_symbol },
         { "SearchGoToEnclosingMethod", null, "Go to _Outer Scope", "<ctrl>F12",
           "Jump to the enclosing method or class", on_go_to_outer_scope },
-        { "SearchGoBack", Gtk.STOCK_GO_BACK, "Go _Back", "<alt>Left",
+        { "SearchGoBack", Gtk.Stock.GO_BACK, "Go _Back", "<alt>Left",
           "Go back after jumping to a definition", on_go_back },
-        { "SearchGoForward", Gtk.STOCK_GO_FORWARD, "Go F_orward", "<alt>Right",
+        { "SearchGoForward", Gtk.Stock.GO_FORWARD, "Go F_orward", "<alt>Right",
           "Go forward to a definition after jumping backwards", on_go_forward },
-        { "SearchNextError", null, "_Next Error", "<ctrl><alt>n",
+        { "SearchNextError", null, "_Next Error", "<ctrl><alt>e",
           "Go to the next compiler error in the ouput and view panes", on_next_error },
         { "SearchPrevError", null, "_Previous Error", "<ctrl><alt>p",
           "Go to the previous compiler error in the ouput and view panes", on_prev_error },
@@ -181,13 +190,13 @@ class Instance : Object {
         
         { "Project", null, "_Project" },   // top-level menu
 
-        { "ProjectBuild", Gtk.STOCK_CONVERT, "_Build", "<ctrl><alt>b",
+        { "ProjectBuild", Gtk.Stock.CONVERT, "_Build", "<ctrl><alt>b",
           "Build the project", on_build },
-        { "ProjectClean", Gtk.STOCK_CLEAR, "_Clean", "<ctrl><alt>c",
+        { "ProjectClean", Gtk.Stock.CLEAR, "_Clean", "<ctrl><alt>c",
           "Clean build output", on_clean },
-        { "ProjectRun", Gtk.STOCK_EXECUTE, "_Run", "<ctrl><alt>r",
+        { "ProjectRun", Gtk.Stock.EXECUTE, "_Run", "<ctrl><alt>r",
           "Run the program", on_run },
-        { "ProjectSettings", Gtk.STOCK_PROPERTIES, "_Settings", "<ctrl><alt>t",
+        { "ProjectSettings", Gtk.Stock.PROPERTIES, "_Settings", "<ctrl><alt>t",
           "Customize the build and clean commands", on_project_settings }
     };
 
@@ -220,16 +229,19 @@ class Instance : Object {
         </ui>
     """;    
 
-    public Instance(Gedit.Window window, Plugin plugin) {
-        this.window = window;
-        this.plugin = plugin;
+    public Instance() {
+        Object();
+    }
+    
+    public void activate() {
+        instances.add(this);
 
         if (history == null)
             history = new ArrayList<Gtk.TextMark>();
               
         // Settings dialog
         settings_dialog = new ProjectSettingsDialog(window);
-        settings_dialog.settings_changed += on_settings_changed;
+        settings_dialog.settings_changed.connect(on_settings_changed);
 
         // Tooltips        
         tip = new Tooltip(window);
@@ -248,7 +260,7 @@ class Instance : Object {
         output_view.set_cursor_visible(false);
         Pango.FontDescription font = Pango.FontDescription.from_string("Monospace");
         output_view.modify_font(font);
-        output_view.button_press_event += on_button_press;
+        output_view.button_press_event.connect(on_button_press);
 
         output_pane = new Gtk.ScrolledWindow(null, null);
         output_pane.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
@@ -256,11 +268,11 @@ class Instance : Object {
         output_pane.show_all();
 
         Gedit.Panel panel = window.get_bottom_panel();
-        panel.add_item_with_stock_icon(output_pane, "Build", Gtk.STOCK_CONVERT);
+        panel.add_item_with_stock_icon(output_pane, "build", "Build", Gtk.Stock.CONVERT);
 
         // Run pane
         run_terminal = new Vte.Terminal();
-        run_terminal.child_exited += on_run_child_exit;
+        run_terminal.child_exited.connect(on_run_child_exit);
         child_process_running = false;
         
         run_pane = new Gtk.ScrolledWindow(null, null);
@@ -268,7 +280,7 @@ class Instance : Object {
         run_pane.add(run_terminal);
         run_pane.show_all();
         
-        panel.add_item_with_stock_icon(run_pane, "Run", Gtk.STOCK_EXECUTE);     
+        panel.add_item_with_stock_icon(run_pane, "run", "Run", Gtk.Stock.EXECUTE);     
 
         // Symbol pane
         symbol_browser = new SymbolBrowser(this);
@@ -306,16 +318,19 @@ class Instance : Object {
         }
     }
 
-    ~Instance() {
-        SignalHandler.disconnect(window, symbol_browser_connect_id);
+    public static Instance? find(Gedit.Window window) {
+        foreach (Instance i in instances)
+            if (i.window == window)
+                return i;
+        return null;
     }
-
+    
     void initialize_menu_items(Gtk.UIManager manager) {
         Gtk.MenuItem search_menu = get_menu_item(manager, "/MenuBar/SearchMenu");
-        search_menu.activate += on_search_menu_activated;
+        search_menu.activate.connect(on_search_menu_activated);
         
         Gtk.MenuItem project_menu = get_menu_item(manager, "/MenuBar/ExtraMenu_1/ProjectMenu");
-        project_menu.activate += on_project_menu_activated;
+        project_menu.activate.connect(on_project_menu_activated);
         
         go_to_definition_menu_item = get_menu_item(manager,
             "/MenuBar/SearchMenu/SearchOps_8/SearchGoToDefinitionMenu");
@@ -385,7 +400,7 @@ class Instance : Object {
 
     static void tab_removed_callback(Gedit.Window window, Gedit.Tab tab, Instance instance) {
         weak Gedit.Document removed_document = tab.get_document();
-        bool document_exists_in_map = documents_modified_state.remove(removed_document);
+        bool document_exists_in_map = documents_modified_state.unset(removed_document);
         assert(document_exists_in_map);
 
         foreach (SignalConnection connection in instance.tab_connections) {
@@ -419,51 +434,67 @@ class Instance : Object {
         bool handled = false; 
         
         // These will always catch, even with alt and ctrl modifiers
-        switch(key.keyval) {
-            case 0xff1b: // escape
+        switch(Gdk.keyval_name(key.keyval)) {
+            case "Escape":
                 if (instance.autocomplete.is_visible())
                     instance.autocomplete.hide();
                 else
                     instance.tip.hide();
                 handled = true;
                 break;
-            case 0xff52: // up arrow
+            case "Up":
                 if (instance.autocomplete.is_visible()) {
                     instance.autocomplete.select_previous();
                     handled = true;
                 }
                 break;
-            case 0xff54: // down arrow
+            case "Down":
                 if (instance.autocomplete.is_visible()) {
                     instance.autocomplete.select_next();
                     handled = true;
                 }
                 break;
-            case 0xff50: // home
+                
+            // We handle Alt+Left and Alt+Right explicitly to override GtkSourceView, which
+            // normally uses these as shortcuts for moving the selected word left or right.
+            case "Left":
+                if (key.state == Gdk.ModifierType.MOD1_MASK) {
+                    instance.on_go_back();
+                    handled = true;
+                }
+                break;
+            case "Right":
+                if (key.state == Gdk.ModifierType.MOD1_MASK) {
+                    instance.on_go_forward();
+                    handled = true;
+                }
+                break;
+                
+            case "Home":
                 if (instance.autocomplete.is_visible()) {
                     instance.autocomplete.select_first_cell();
                     handled = true;
                 }
                 break;
-            case 0xff57: // end
+            case "End":
                 if (instance.autocomplete.is_visible()) {
                     instance.autocomplete.select_last_cell();
                     handled = true;
                 }
                 break;
-            case 0xff55: // page up
+            case "Page_Up":
                 if (instance.autocomplete.is_visible()) {
                     instance.autocomplete.page_up();
                     handled = true;
                 }
                 break;
-            case 0xff56: // page down
+            case "Page_Down":
                 if (instance.autocomplete.is_visible()) {
                     instance.autocomplete.page_down();
                     handled = true;
                 }
                 break;
-            case 0xff0d: // return
+            case "Return":
                 if (instance.autocomplete.is_visible()) {
                     instance.autocomplete.select_item();
                     handled = true;
@@ -595,7 +626,7 @@ class Instance : Object {
     }
   
     void hide_old_build_output() {
-        foreach (Instance instance in plugin.instances) {
+        foreach (Instance instance in instances) {
             if (instance != this && last_program_to_build == instance.last_program_to_build) {
                 instance.output_pane.hide();
                 instance.last_program_to_build = null;
@@ -717,25 +748,12 @@ class Instance : Object {
             build();
     }
 
-    void scroll_tab_to_iter(Gedit.Tab tab, Gtk.TextIter iter) {
-        Gedit.View view = tab.get_view();
-
-        Gtk.TextMark mark = iter.get_buffer().get_mark("valencia");
-        if (mark == null) {
-            mark = new Gtk.TextMark("valencia", false);
-            iter.get_buffer().add_mark(mark, iter);
-        } else {
-            iter.get_buffer().move_mark(mark, iter);
+    bool scroll_view_to_cursor() {
+        if (view_to_scroll != null) {
+            view_to_scroll.scroll_to_cursor();
+            view_to_scroll = null;
         }
-        // We don't use view.scroll_to_iter because, according to Devhelp
-        //   "Note that [scroll_to_iter] uses the currently-computed height of the
-        //   lines in the text buffer.  Line heights are computed in an idle
-        //   handler; so this function may not have the desired effect if it's called
-        //   before the height computations.  To avoid oddness, consider using
-        //   gtk_text_view_scroll_to_mark() which saves a point to be scrolled
-        //   to after line validation."
-        view.scroll_to_mark(mark, 0.2, false, 0.0, 0.0);
-        view.grab_focus();
+        return false;
     }
 
     void go(Gedit.Tab tab, Destination dest) {
@@ -744,7 +762,12 @@ class Instance : Object {
         Gtk.TextIter end;
         dest.get_range(document, out start, out end);
         document.select_range(start, end);
-        scroll_tab_to_iter(tab, start);
+
+        // We need to scroll to the selection in an idle handler.  If we don't, then when 
+        // a new document is being loaded sometimes the scrolling won't happen at all,
+        // especially if the document is long.  This was http://trac.yorba.org/ticket/1000 .
+        view_to_scroll = tab.get_view();
+        Idle.add(scroll_view_to_cursor);
     }
     
     void on_document_loaded(Gedit.Document document) {
@@ -770,7 +793,8 @@ class Instance : Object {
             return;
         }
         
-        tab = window.create_tab_from_uri(filename_to_uri(filename), null, 0, false, true);
+        Gedit.Encoding encoding = null;
+        tab = window.create_tab_from_location(File.new_for_path(filename), encoding, 0, 0, false, true);
         target_filename = filename;
         destination = dest;
         Signal.connect(tab.get_document(), "loaded", (Callback) document_loaded_callback, this);
@@ -834,13 +858,13 @@ class Instance : Object {
     }
 
     void jump_to_document_error(Gtk.TextIter iter, ErrorInfo info, Program program) {
-        int line_number = info.start_line.to_int();
+        int line_number = int.parse(info.start_line);
         Destination dest;
         if (info.start_char == null)
             dest = new LineNumber(line_number - 1);
         else
-            dest = new LineCharRange(line_number - 1, info.start_char.to_int() - 1,
-                                     info.end_line.to_int() - 1, info.end_char.to_int());
+            dest = new LineCharRange(line_number - 1, int.parse(info.start_char) - 1,
+                                     int.parse(info.end_line) - 1, int.parse(info.end_char));
 
         if (Path.is_absolute(info.filename)) {
             jump(info.filename, dest);
@@ -893,7 +917,7 @@ class Instance : Object {
         Program program = Program.find_containing(filename, true);
 
         foreach (Gedit.Document document in Gedit.App.get_default().get_documents()) {
-            assert(documents_modified_state.contains(document));
+            assert(documents_modified_state.has_key(document));
             bool previously_modified = documents_modified_state.get(document);
             bool currently_modified = document.get_modified();
             documents_modified_state.set(document, currently_modified);
@@ -907,7 +931,7 @@ class Instance : Object {
         }
     }
     
-    void get_buffer_contents_and_position(string filename, out unowned string source, out int pos) {
+    void get_buffer_contents_and_position(string filename, out string source, out int pos) {
         reparse_modified_documents(filename);
         
         Gedit.Document document = window.get_active_document();
@@ -924,8 +948,8 @@ class Instance : Object {
         Program program = Program.find_containing(filename, true);
         
         if (program.is_parsing()) {
-            program.parsed_file += update_parse_dialog;
-            program.system_parse_complete += jump_to_symbol_definition;
+            program.parsed_file.connect(update_parse_dialog);
+            program.system_parse_complete.connect(jump_to_symbol_definition);
         } else jump_to_symbol_definition();
     }
 
@@ -934,7 +958,7 @@ class Instance : Object {
         if (filename == null)
             return;
             
-        weak string source;
+        string source;
         int pos;
         get_buffer_contents_and_position(filename, out source, out pos);
 
@@ -959,7 +983,7 @@ class Instance : Object {
         if (filename == null || !Program.is_vala(filename))
             return;
 
-        weak string source;
+        string source;
         int pos;
         get_buffer_contents_and_position(filename, out source, out pos);
 
@@ -1041,7 +1065,7 @@ class Instance : Object {
         }
     }
 
-    bool on_button_press(Gtk.TextView view, Gdk.EventButton event) {
+    bool on_button_press(Gdk.EventButton event) {
         if (event.type != Gdk.EventType.2BUTTON_PRESS)  // double click?
             return false;   // return if not
         Gtk.TextIter iter = get_insert_iter(output_buffer);
@@ -1111,7 +1135,7 @@ class Instance : Object {
             if (einfo != null) {
                 Gedit.Document document = window.get_active_document();
                 Gtk.TextIter document_iter;
-                document.get_iter_at_line(out document_iter, einfo.start_line.to_int());
+                document.get_iter_at_line(out document_iter, int.parse(einfo.start_line));
               
                 Gtk.TextMark doc_mark = document.create_mark(null, document_iter, false);
                 Gtk.TextMark build_mark = output_buffer.create_mark(null, iter, false);
@@ -1125,7 +1149,7 @@ class Instance : Object {
     }
 
     Instance? find_build_instance(string cur_top_directory) {
-        foreach (Instance inst in plugin.instances) {
+        foreach (Instance inst in instances) {
             if (inst.last_program_to_build != null && 
                 inst.last_program_to_build.get_top_directory() == cur_top_directory) {
                     return inst;
@@ -1230,8 +1254,16 @@ class Instance : Object {
 
         string[] args = { binary_path };
         
-        int pid = run_terminal.fork_command(binary_path, args, null, Path.get_dirname(binary_path),
-                                            false, false, false);
+        int pid;
+        bool ok;
+        try {
+            ok = run_terminal.fork_command_full(
+                0, Path.get_dirname(binary_path), args, null, 0, null, out pid);
+        } catch (Error e) { ok = false; }
+        if (!ok) {
+            show_error_dialog("can't fork command");
+            return;
+        }
 
         if (pid == -1) {
             show_error_dialog("There was a problem running \"" + binary_path + "\"");
@@ -1275,27 +1307,24 @@ class Instance : Object {
 //                   Status bar update                    //
 ////////////////////////////////////////////////////////////
 
+    // If the range (old_cursor_offset, new_cursor_offset) contains a brace character
+    // then update old_cursor_offset and return true.
+    //
+    // We don't want to allocate memory here since this code runs every time the
+    // cursor moves.
     bool cursor_moved_outside_old_scope(string buffer, int new_cursor_offset) {
-        int begin_offset;
-        int length;
-
-        if (new_cursor_offset < old_cursor_offset) {
-            begin_offset = new_cursor_offset;
-            length = old_cursor_offset - new_cursor_offset;
-        } else {
-            begin_offset = old_cursor_offset;
-            length = new_cursor_offset - old_cursor_offset;
-        }
+        int old = int.min(old_cursor_offset, buffer.char_count());     // in case buffer has shrunk
         
-        weak string begin_string = buffer.offset(begin_offset);
-
-        for (int i = 0; i < length; ++i) {
-            unichar c = begin_string.get_char();
+        long s = buffer.index_of_nth_char(int.min(old, new_cursor_offset));
+        long end = buffer.index_of_nth_char(int.max(old, new_cursor_offset));
+        
+        while (s < end) {
+            unichar c = buffer.get_char(s);
             if (c == '{' || c == '}') {
                 old_cursor_offset = new_cursor_offset;
                 return true;
             }
-            begin_string = begin_string.next_char();
+            s = next_utf8_char(buffer, s);
         }
         
         return false;
@@ -1307,7 +1336,7 @@ class Instance : Object {
             return;
 
         Gedit.Document document = window.get_active_document();
-        weak string source = buffer_contents(document);
+        string source = buffer_contents(document);
         Gtk.TextIter insert = get_insert_iter(document);
         int pos = insert.get_offset();
         
@@ -1339,8 +1368,8 @@ class Instance : Object {
         Program program = Program.find_containing(filename, true);
 
         if (program.is_parsing()) {
-            program.parsed_file += update_parse_dialog;
-            program.system_parse_complete += display_tooltip_or_autocomplete;
+            program.parsed_file.connect(update_parse_dialog);
+            program.system_parse_complete.connect(display_tooltip_or_autocomplete);
         } else display_tooltip_or_autocomplete();
     }
 
@@ -1385,7 +1414,7 @@ class Instance : Object {
         int cursor_pos;
     
         string? filename = active_filename();
-        weak string source;
+        string source;
         get_buffer_contents_and_position(filename, out source, out cursor_pos); 
 
         parse_info = new ExpressionParser(source, cursor_pos, partial).parse();
@@ -1524,6 +1553,7 @@ void on_clean() {
     void on_project_menu_activated() {
         bool active_file_not_null = active_filename() != null;
         build_menu_item.set_sensitive(active_file_not_null);
+        clean_menu_item.set_sensitive(active_file_not_null);
 
         // Make sure the program for the file exists first, otherwise disable the run button        
         if (active_file_not_null && program_exists_for_active_document()) {
@@ -1540,6 +1570,9 @@ void on_clean() {
         settings_menu_item.set_sensitive(active_file_not_null);
     }
 
+    public void update_state() {
+    }
+
     public void deactivate() {
         Gtk.UIManager manager = window.get_ui_manager();
         manager.remove_ui(ui_id);
@@ -1547,38 +1580,14 @@ void on_clean() {
 
         Gedit.Panel panel = window.get_bottom_panel();
         panel.remove_item(output_pane);
-    }
-}
-
-class Plugin : Gedit.Plugin {
-    public Gee.ArrayList<Instance> instances = new Gee.ArrayList<Instance>();
 
-    // This empty construct block eliminates a build warning about chaining up to a private 
-    // base constructor.
-    construct { }
-
-    public override void activate(Gedit.Window window) {
-        Instance new_instance = new Instance(window, this);
-        instances.add(new_instance);
-    }
-    
-    Instance? find(Gedit.Window window) {
-        foreach (Instance i in instances)
-            if (i.window == window)
-                return i;
-        return null;
-    }
-    
-    public override void deactivate(Gedit.Window window) {
-        Instance i = find(window);
-        i.deactivate();
-        instances.remove(i);
+        SignalHandler.disconnect(window, symbol_browser_connect_id);
+        instances.remove(this);
     }
 }
 
-
 [ModuleInit]
-public Type register_gedit_plugin (TypeModule module) {
-    return typeof (Plugin);
+public void peas_register_types (TypeModule module) {
+	var o = module as Peas.ObjectModule;
+ 	o.register_extension_type(typeof(Gedit.WindowActivatable), typeof(Instance));
 }
-
diff --git a/vapi/gedit.vapi b/vapi/gedit.vapi
new file mode 100644
index 0000000..b2cd400
--- /dev/null
+++ b/vapi/gedit.vapi
@@ -0,0 +1,456 @@
+/* This VAPI file came from the Vala Toys for Gedit source tree.
+ * Despite the warning immediately below, we've made some small edits to it:
+ * - added Document.save() method
+ * - commented out Document.save_as() method and Document.save() signal
+ */
+
+/* gedit-3.0.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "Gedit", lower_case_cprefix = "gedit_", gir_namespace = "Gedit", gir_version = "3.0")]
+namespace Gedit {
+	[CCode (type_id = "gedit_app_get_type ()", cheader_filename = "gedit/gedit-app.h")]
+	public class App : GLib.InitiallyUnowned {
+		[CCode (has_construct_function = false)]
+		protected App ();
+		public unowned Gedit.Window create_window (Gdk.Screen? screen);
+		public unowned Gedit.Window get_active_window ();
+		public static unowned Gedit.App get_default ();
+		public GLib.List<weak Gedit.Document> get_documents ();
+		public Gedit.LockdownMask get_lockdown ();
+		public GLib.List<weak Gedit.View> get_views ();
+		public unowned GLib.List<weak Gedit.Window> get_windows ();
+		[NoWrapper]
+		public virtual string help_link_id (string name, string link_id);
+		[NoWrapper]
+		public virtual bool last_window_destroyed ();
+		public virtual void set_window_title (Gedit.Window window, string title);
+		public virtual bool show_help (Gtk.Window parent, string name, string link_id);
+		public Gedit.LockdownMask lockdown { get; }
+	}
+	[CCode (type_id = "gedit_document_get_type ()", cheader_filename = "gedit/gedit-document.h")]
+	public class Document : GtkSource.Buffer {
+		[CCode (has_construct_function = false)]
+		public Document ();
+		public static GLib.Quark error_quark ();
+		public bool get_can_search_again ();
+		public Gedit.DocumentCompressionType get_compression_type ();
+		public string get_content_type ();
+		public bool get_deleted ();
+		public bool get_enable_search_highlighting ();
+		public unowned Gedit.Encoding get_encoding ();
+		public unowned GtkSource.Language get_language ();
+		public GLib.File get_location ();
+		public string get_metadata (string key);
+		public string get_mime_type ();
+		public Gedit.DocumentNewlineType get_newline_type ();
+		public bool get_readonly ();
+		public string get_search_text (uint? flags);
+		public string get_short_name_for_display ();
+		public string get_uri_for_display ();
+		public bool goto_line (int line);
+		public bool goto_line_offset (int line, int line_offset);
+		public bool is_local ();
+		public bool is_untitled ();
+		public bool is_untouched ();
+		public bool load_cancel ();
+		public void load_stream (GLib.InputStream stream, Gedit.Encoding? encoding, int line_pos, int column_pos);
+		public int replace_all (string find, string replace, uint flags);
+		public void save(Gedit.DocumentSaveFlags flags);
+//		[CCode (vfunc_name = "save")]
+//		public virtual void save_as (GLib.File location, Gedit.Encoding encoding, Gedit.DocumentNewlineType newline_type, Gedit.DocumentCompressionType compression_type, Gedit.DocumentSaveFlags flags);
+		public bool search_backward (Gtk.TextIter? start, Gtk.TextIter? end, Gtk.TextIter? match_start, Gtk.TextIter? match_end);
+		public bool search_forward (Gtk.TextIter? start, Gtk.TextIter? end, Gtk.TextIter? match_start, Gtk.TextIter? match_end);
+		public void set_content_type (string? content_type);
+		public void set_enable_search_highlighting (bool enable);
+		public void set_language (GtkSource.Language? lang);
+		public void set_location (GLib.File location);
+		public void set_search_text (string text, uint flags);
+		public void set_short_name_for_display (string? short_name);
+		public bool can_search_again { get; }
+		public Gedit.DocumentCompressionType compression_type { get; set construct; }
+		public string content_type { owned get; set; }
+		public bool enable_search_highlighting { get; set; }
+		public Gedit.Encoding encoding { get; }
+		public GLib.File location { owned get; set; }
+		public string mime_type { owned get; }
+		public Gedit.DocumentNewlineType newline_type { get; set construct; }
+		[NoAccessorMethod]
+		public bool read_only { get; }
+		[NoAccessorMethod]
+		public string shortname { owned get; set; }
+		public virtual signal void cursor_moved ();
+		[HasEmitter]
+		public virtual signal void load (GLib.File location, Gedit.Encoding encoding, int line_pos, bool column_pos);
+		public virtual signal void loaded (void* error);
+		public virtual signal void loading (uint64 size, uint64 total_size);
+		[HasEmitter]
+//		public virtual signal void save (GLib.File location, Gedit.Encoding encoding, Gedit.DocumentNewlineType newline_type, Gedit.DocumentCompressionType compression_type, Gedit.DocumentSaveFlags flags);
+		public virtual signal void saved (void* error);
+		public virtual signal void saving (uint64 size, uint64 total_size);
+		public virtual signal void search_highlight_updated (Gtk.TextIter start, Gtk.TextIter end);
+	}
+	[Compact]
+	[CCode (copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gedit_encoding_get_type ()", cheader_filename = "gedit/gedit-encodings.h")]
+	public class Encoding {
+		[CCode (has_construct_function = false)]
+		protected Encoding ();
+		public Gedit.Encoding copy ();
+		public void free ();
+		public unowned string get_charset ();
+		public static unowned Gedit.Encoding get_current ();
+		public static unowned Gedit.Encoding get_from_charset (string charset);
+		public static unowned Gedit.Encoding get_from_index (int index);
+		public unowned string get_name ();
+		public static unowned Gedit.Encoding get_utf8 ();
+		public string to_string ();
+	}
+	[CCode (type_id = "gedit_encodings_combo_box_get_type ()", cheader_filename = "gedit/gedit-encodings-combo-box.h")]
+	public class EncodingsComboBox : Gtk.ComboBox, Atk.Implementor, Gtk.Buildable, Gtk.CellEditable, Gtk.CellLayout {
+		[CCode (type = "GtkWidget*", has_construct_function = false)]
+		public EncodingsComboBox (bool save_mode);
+		public unowned Gedit.Encoding get_selected_encoding ();
+		public void set_selected_encoding (Gedit.Encoding? encoding);
+		[NoAccessorMethod]
+		public bool save_mode { get; set construct; }
+	}
+	[CCode (type_id = "gedit_message_get_type ()", cheader_filename = "gedit/gedit-message.h")]
+	public class Message : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected Message ();
+		public GLib.Type get_key_type (string key);
+		public void* get_message_type ();
+		public unowned string get_method ();
+		public unowned string get_object_path ();
+		public void get_value (string key, out GLib.Value value);
+		public bool has_key (string key);
+		public void set_value (string key, out GLib.Value value);
+		public void set_valuesv ([CCode (array_length_cname = "n_values", array_length_pos = 2.1)] string[] keys, [CCode (array_length_cname = "n_values", array_length_pos = 2.1)] GLib.Value[] values);
+		public bool validate ();
+		public string method { get; }
+		public string object_path { get; }
+		[NoAccessorMethod]
+		public Gedit.MessageType type { owned get; construct; }
+	}
+	[CCode (type_id = "gedit_message_bus_get_type ()", cheader_filename = "gedit/gedit-message-bus.h")]
+	public class MessageBus : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public MessageBus ();
+		public void block (uint id);
+		public void block_by_func (string object_path, string method, [CCode (delegate_target_pos = 3.1)] Gedit.MessageCallback callback);
+		public uint connect (string object_path, string method, [CCode (delegate_target_pos = 3.1)] owned Gedit.MessageCallback callback);
+		public void disconnect (uint id);
+		public void disconnect_by_func (string object_path, string method, [CCode (delegate_target_pos = 3.1)] Gedit.MessageCallback callback);
+		public void @foreach (Gedit.MessageBusForeach func);
+		public static unowned Gedit.MessageBus get_default ();
+		public bool is_registered (string object_path, string method);
+		public Gedit.MessageType lookup (string object_path, string method);
+		public void send_message (Gedit.Message message);
+		public void send_message_sync (Gedit.Message message);
+		public void unblock (uint id);
+		public void unblock_by_func (string object_path, string method, [CCode (delegate_target_pos = 3.1)] Gedit.MessageCallback callback);
+		public void unregister (Gedit.MessageType message_type);
+		public void unregister_all (string object_path);
+		public virtual signal void dispatch (Gedit.Message message);
+		public virtual signal void registered (Gedit.MessageType message_type);
+		public virtual signal void unregistered (Gedit.MessageType message_type);
+	}
+	[Compact]
+	[CCode (copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gedit_message_type_get_type ()", cheader_filename = "gedit/gedit-message-type.h")]
+	public class MessageType {
+		[CCode (has_construct_function = false)]
+		protected MessageType ();
+		public void @foreach (Gedit.MessageTypeForeach func);
+		public unowned string get_method ();
+		public unowned string get_object_path ();
+		public static string identifier (string? object_path, string? method);
+		public static bool is_supported (GLib.Type type);
+		public static bool is_valid_object_path (string? object_path);
+		public GLib.Type lookup (string key);
+		public Gedit.MessageType @ref ();
+		public void unref ();
+	}
+	[CCode (type_id = "gedit_panel_get_type ()", cheader_filename = "gedit/gedit-panel.h")]
+	public class Panel : Gtk.VBox, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
+		[CCode (type = "GtkWidget*", has_construct_function = false)]
+		public Panel (Gtk.Orientation orientation);
+		public bool activate_item (Gtk.Widget item);
+		public bool add_item (Gtk.Widget item, string id, string display_name, Gtk.Widget? image);
+		public bool add_item_with_stock_icon (Gtk.Widget item, string id, string display_name, string? stock_id);
+		public int get_n_items ();
+		public Gtk.Orientation get_orientation ();
+		public bool item_is_active (Gtk.Widget item);
+		public bool remove_item (Gtk.Widget item);
+		public Gtk.Orientation orientation { get; construct; }
+		public virtual signal void close ();
+		public virtual signal void focus_document ();
+		public virtual signal void item_added (Gtk.Widget item);
+		public virtual signal void item_removed (Gtk.Widget item);
+	}
+	[CCode (type_id = "gedit_progress_info_bar_get_type ()", cheader_filename = "gedit/gedit-progress-info-bar.h")]
+	public class ProgressInfoBar : Gtk.InfoBar, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
+		[CCode (type = "GtkWidget*", has_construct_function = false)]
+		public ProgressInfoBar (string stock_id, string markup, bool has_cancel);
+		public void pulse ();
+		public void set_fraction (double fraction);
+		public void set_markup (string markup);
+		public void set_stock_image (string stock_id);
+		public void set_text (string text);
+		[NoAccessorMethod]
+		public bool has_cancel_button { construct; }
+	}
+	[CCode (type_id = "gedit_statusbar_get_type ()", cheader_filename = "gedit/gedit-statusbar.h")]
+	public class Statusbar : Gtk.Statusbar, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
+		[CCode (type = "GtkWidget*", has_construct_function = false)]
+		public Statusbar ();
+		public void clear_overwrite ();
+		public void set_cursor_position (int line, int col);
+		public void set_overwrite (bool overwrite);
+		public void set_window_state (Gedit.WindowState state, int num_of_errors);
+	}
+	[CCode (type_id = "gedit_tab_get_type ()", cheader_filename = "gedit/gedit-tab.h")]
+	public class Tab : Gtk.VBox, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
+		[CCode (has_construct_function = false)]
+		protected Tab ();
+		public bool get_auto_save_enabled ();
+		public int get_auto_save_interval ();
+		public unowned Gedit.Document get_document ();
+		public static unowned Gedit.Tab get_from_document (Gedit.Document doc);
+		public Gedit.TabState get_state ();
+		public unowned Gedit.View get_view ();
+		public void set_auto_save_enabled (bool enable);
+		public void set_auto_save_interval (int interval);
+		public void set_info_bar (Gtk.Widget info_bar);
+		[NoAccessorMethod]
+		public bool autosave { get; set; }
+		[NoAccessorMethod]
+		public int autosave_interval { get; set; }
+		[NoAccessorMethod]
+		public string name { owned get; }
+		public Gedit.TabState state { get; }
+		public virtual signal void drop_uris ([CCode (array_length = false, array_null_terminated = true)] string[] uri_list);
+	}
+	[CCode (type_id = "gedit_view_get_type ()", cheader_filename = "gedit/gedit-view.h")]
+	public class View : GtkSource.View, Atk.Implementor, Gtk.Buildable, Gtk.Scrollable {
+		[CCode (type = "GtkWidget*", has_construct_function = false)]
+		public View (Gedit.Document doc);
+		public void copy_clipboard ();
+		public void cut_clipboard ();
+		public void delete_selection ();
+		public void paste_clipboard ();
+		public void scroll_to_cursor ();
+		public void select_all ();
+		public void set_font (bool def, string font_name);
+		public virtual signal void drop_uris ([CCode (array_length = false, array_null_terminated = true)] string[] uri_list);
+	}
+	[CCode (type_id = "gedit_window_get_type ()", cheader_filename = "gedit/gedit-window.h")]
+	public class Window : Gtk.Window, Atk.Implementor, Gtk.Buildable {
+		[CCode (has_construct_function = false)]
+		protected Window ();
+		public void close_all_tabs ();
+		public void close_tab (Gedit.Tab tab);
+		public void close_tabs (GLib.List<weak Gedit.Tab> tabs);
+		public unowned Gedit.Tab create_tab (bool jump_to);
+		public unowned Gedit.Tab create_tab_from_location (GLib.File location, Gedit.Encoding encoding, int line_pos, int column_pos, bool create, bool jump_to);
+		public unowned Gedit.Tab create_tab_from_stream (GLib.InputStream stream, Gedit.Encoding encoding, int line_pos, int column_pos, bool jump_to);
+		public unowned Gedit.Document get_active_document ();
+		public unowned Gedit.Tab get_active_tab ();
+		public unowned Gedit.View get_active_view ();
+		public unowned Gedit.Panel get_bottom_panel ();
+		public GLib.List<weak Gedit.Document> get_documents ();
+		public unowned Gtk.WindowGroup get_group ();
+		public unowned Gedit.MessageBus get_message_bus ();
+		public unowned Gedit.Panel get_side_panel ();
+		public Gedit.WindowState get_state ();
+		public unowned Gtk.Widget get_statusbar ();
+		public unowned Gedit.Tab get_tab_from_location (GLib.File location);
+		public unowned Gtk.UIManager get_ui_manager ();
+		public GLib.List<weak Gedit.Document> get_unsaved_documents ();
+		public GLib.List<weak Gedit.View> get_views ();
+		public void set_active_tab (Gedit.Tab tab);
+		public Gedit.WindowState state { get; }
+		public virtual signal void active_tab_changed (Gedit.Tab tab);
+		public virtual signal void active_tab_state_changed ();
+		public virtual signal void tab_added (Gedit.Tab tab);
+		public virtual signal void tab_removed (Gedit.Tab tab);
+		public virtual signal void tabs_reordered ();
+	}
+	[CCode (cheader_filename = "gedit/gedit-app-activatable.h", type_cname = "GeditAppActivatableInterface", type_id = "gedit_app_activatable_get_type ()")]
+	public interface AppActivatable : GLib.Object {
+		public abstract void activate ();
+		public abstract void deactivate ();
+		[NoAccessorMethod]
+		public Gedit.App app { owned get; construct; }
+	}
+	[CCode (cheader_filename = "gedit/gedit-view-activatable.h", type_cname = "GeditViewActivatableInterface", type_id = "gedit_view_activatable_get_type ()")]
+	public interface ViewActivatable : GLib.Object {
+		public abstract void activate ();
+		public abstract void deactivate ();
+		[NoAccessorMethod]
+		public Gedit.View view { owned get; construct; }
+	}
+	[CCode (cheader_filename = "gedit/gedit-window-activatable.h", type_cname = "GeditWindowActivatableInterface", type_id = "gedit_window_activatable_get_type ()")]
+	public interface WindowActivatable : GLib.Object {
+		public abstract void activate ();
+		public abstract void deactivate ();
+		public abstract void update_state ();
+		[NoAccessorMethod]
+		public Gedit.Window window { owned get; construct; }
+	}
+	[CCode (cprefix = "GEDIT_", cheader_filename = "gedit/gedit-debug.h")]
+	[Flags]
+	public enum DebugSection {
+		NO_DEBUG,
+		DEBUG_VIEW,
+		DEBUG_SEARCH,
+		DEBUG_PRINT,
+		DEBUG_PREFS,
+		DEBUG_PLUGINS,
+		DEBUG_TAB,
+		DEBUG_DOCUMENT,
+		DEBUG_COMMANDS,
+		DEBUG_APP,
+		DEBUG_SESSION,
+		DEBUG_UTILS,
+		DEBUG_METADATA,
+		DEBUG_WINDOW,
+		DEBUG_LOADER,
+		DEBUG_SAVER,
+		DEBUG_PANEL
+	}
+	[CCode (cprefix = "GEDIT_DOCUMENT_COMPRESSION_TYPE_", cheader_filename = "gedit/gedit-document.h")]
+	public enum DocumentCompressionType {
+		NONE,
+		GZIP
+	}
+	[CCode (cprefix = "GEDIT_DOCUMENT_NEWLINE_TYPE_", cheader_filename = "gedit/gedit-document.h")]
+	public enum DocumentNewlineType {
+		LF,
+		CR,
+		CR_LF
+	}
+	[CCode (cprefix = "GEDIT_DOCUMENT_SAVE_", cheader_filename = "gedit/gedit-document.h")]
+	[Flags]
+	public enum DocumentSaveFlags {
+		IGNORE_MTIME,
+		IGNORE_BACKUP,
+		PRESERVE_BACKUP,
+		IGNORE_INVALID_CHARS
+	}
+	[CCode (cprefix = "GEDIT_LOCKDOWN_", cheader_filename = "gedit/gedit-app.h")]
+	[Flags]
+	public enum LockdownMask {
+		COMMAND_LINE,
+		PRINTING,
+		PRINT_SETUP,
+		SAVE_TO_DISK
+	}
+	[CCode (cprefix = "GEDIT_SEARCH_", cheader_filename = "gedit/gedit-document.h")]
+	[Flags]
+	public enum SearchFlags {
+		DONT_SET_FLAGS,
+		ENTIRE_WORD,
+		CASE_SENSITIVE
+	}
+	[CCode (cprefix = "GEDIT_TAB_", cheader_filename = "gedit/gedit-tab.h")]
+	public enum TabState {
+		STATE_NORMAL,
+		STATE_LOADING,
+		STATE_REVERTING,
+		STATE_SAVING,
+		STATE_PRINTING,
+		STATE_PRINT_PREVIEWING,
+		STATE_SHOWING_PRINT_PREVIEW,
+		STATE_GENERIC_NOT_EDITABLE,
+		STATE_LOADING_ERROR,
+		STATE_REVERTING_ERROR,
+		STATE_SAVING_ERROR,
+		STATE_GENERIC_ERROR,
+		STATE_CLOSING,
+		STATE_EXTERNALLY_MODIFIED_NOTIFICATION,
+		NUM_OF_STATES
+	}
+	[CCode (cprefix = "GEDIT_WINDOW_STATE_", cheader_filename = "gedit/gedit-window.h")]
+	[Flags]
+	public enum WindowState {
+		NORMAL,
+		SAVING,
+		PRINTING,
+		LOADING,
+		ERROR,
+		SAVING_SESSION
+	}
+	[CCode (cheader_filename = "gedit/gedit-message-bus.h", instance_pos = 1.9)]
+	public delegate void MessageBusForeach (Gedit.MessageType message_type);
+	[CCode (cheader_filename = "gedit/gedit-message-bus.h", instance_pos = 2.9)]
+	public delegate void MessageCallback (Gedit.MessageBus bus, Gedit.Message message);
+	[CCode (cheader_filename = "gedit/gedit-message-type.h", instance_pos = 3.9)]
+	public delegate void MessageTypeForeach (string key, GLib.Type type, bool required);
+	[CCode (cheader_filename = "gedit/gedit-app.h")]
+	public const int LOCKDOWN_ALL;
+	[CCode (cheader_filename = "gedit/gedit-document.h")]
+	public const string METADATA_ATTRIBUTE_ENCODING;
+	[CCode (cheader_filename = "gedit/gedit-document.h")]
+	public const string METADATA_ATTRIBUTE_LANGUAGE;
+	[CCode (cheader_filename = "gedit/gedit-document.h")]
+	public const string METADATA_ATTRIBUTE_POSITION;
+	[CCode (cheader_filename = "gedit/gedit-commands.h")]
+	public static void commands_load_location (Gedit.Window window, GLib.File location, Gedit.Encoding? encoding, int line_pos, int column_pos);
+	[CCode (cheader_filename = "gedit/gedit-commands.h")]
+	public static GLib.SList<weak Gedit.Document> commands_load_locations (Gedit.Window window, GLib.SList<weak GLib.File> locations, Gedit.Encoding? encoding, int line_pos, int column_pos);
+	[CCode (cheader_filename = "gedit/gedit-commands.h")]
+	public static void commands_save_all_documents (Gedit.Window window);
+	[CCode (cheader_filename = "gedit/gedit-commands.h")]
+	public static void commands_save_document (Gedit.Window window, Gedit.Document document);
+	[CCode (cheader_filename = "gedit/gedit-debug.h")]
+	public static void debug (Gedit.DebugSection section, string file, int line, string function);
+	[CCode (cheader_filename = "gedit/gedit-debug.h")]
+	public static void debug_init ();
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_basename_for_display (GLib.File location);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static bool utils_can_read_from_stdin ();
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static bool utils_decode_uri (string uri, out string? scheme, out string? user, out string? port, out string? host, out string? path);
+	[CCode (cheader_filename = "gedit/gedit-utils.h", array_length = false, array_null_terminated = true)]
+	public static string[] utils_drop_get_uris (Gtk.SelectionData selection_data);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_escape_search_text (string text);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_escape_underscores (string text, ssize_t length);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static Gedit.DocumentCompressionType utils_get_compression_type_from_content_type (string content_type);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static void utils_get_current_viewport (Gdk.Screen screen, out int x, out int y);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static uint utils_get_current_workspace (Gdk.Screen screen);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static uint utils_get_window_workspace (Gtk.Window gtkwindow);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static bool utils_is_valid_location (GLib.File location);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_location_get_dirname_for_display (GLib.File location);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static bool utils_location_has_file_scheme (GLib.File location);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_make_canonical_uri_from_shell_arg (string str);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_make_valid_utf8 (string name);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static void utils_menu_position_under_tree_view (Gtk.Menu menu, int x, int y, bool push_in, void* user_data);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static void utils_menu_position_under_widget (Gtk.Menu menu, int x, int y, bool push_in, void* user_data);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_replace_home_dir_with_tilde (string uri);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static void utils_set_atk_name_description (Gtk.Widget widget, string name, string description);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static void utils_set_atk_relation (Gtk.Widget obj1, Gtk.Widget obj2, Atk.RelationType rel_type);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_str_end_truncate (string string, uint truncate_length);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_str_middle_truncate (string string, uint truncate_length);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_unescape_search_text (string text);
+	[CCode (cheader_filename = "gedit/gedit-utils.h")]
+	public static string utils_uri_get_dirname (string uri);
+}
diff --git a/vapi/gtksourceview-3.0.vapi b/vapi/gtksourceview-3.0.vapi
new file mode 100644
index 0000000..85935f2
--- /dev/null
+++ b/vapi/gtksourceview-3.0.vapi
@@ -0,0 +1,605 @@
+/* gtksourceview-3.0.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "GtkSource", lower_case_cprefix = "gtk_source_", gir_namespace = "GtkSource", gir_version = "3.0")]
+namespace GtkSource {
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class Buffer : Gtk.TextBuffer {
+		[CCode (has_construct_function = false)]
+		public Buffer (Gtk.TextTagTable? table);
+		public bool backward_iter_to_source_mark (Gtk.TextIter iter, string? category);
+		public void begin_not_undoable_action ();
+		public unowned GtkSource.Mark create_source_mark (string? name, string category, Gtk.TextIter where);
+		public void end_not_undoable_action ();
+		public void ensure_highlight (Gtk.TextIter start, Gtk.TextIter end);
+		public bool forward_iter_to_source_mark (Gtk.TextIter iter, string? category);
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] get_context_classes_at_iter (Gtk.TextIter iter);
+		public bool get_highlight_matching_brackets ();
+		public bool get_highlight_syntax ();
+		public unowned GtkSource.Language get_language ();
+		public int get_max_undo_levels ();
+		public GLib.SList<weak GtkSource.Mark> get_source_marks_at_iter (Gtk.TextIter iter, string? category);
+		public GLib.SList<weak GtkSource.Mark> get_source_marks_at_line (int line, string? category);
+		public unowned GtkSource.StyleScheme get_style_scheme ();
+		public unowned GtkSource.UndoManager get_undo_manager ();
+		public bool iter_backward_to_context_class_toggle (Gtk.TextIter iter, string context_class);
+		public bool iter_forward_to_context_class_toggle (Gtk.TextIter iter, string context_class);
+		public bool iter_has_context_class (Gtk.TextIter iter, string context_class);
+		public void remove_source_marks (Gtk.TextIter start, Gtk.TextIter end, string? category);
+		public void set_highlight_matching_brackets (bool highlight);
+		public void set_highlight_syntax (bool highlight);
+		public void set_language (GtkSource.Language? language);
+		public void set_max_undo_levels (int max_undo_levels);
+		public void set_style_scheme (GtkSource.StyleScheme? scheme);
+		public void set_undo_manager (GtkSource.UndoManager? manager);
+		[CCode (has_construct_function = false)]
+		public Buffer.with_language (GtkSource.Language language);
+		[NoAccessorMethod]
+		public bool can_redo { get; }
+		[NoAccessorMethod]
+		public bool can_undo { get; }
+		public bool highlight_matching_brackets { get; set; }
+		public bool highlight_syntax { get; set; }
+		public GtkSource.Language language { get; set; }
+		public int max_undo_levels { get; set; }
+		public GtkSource.StyleScheme style_scheme { get; set; }
+		public GtkSource.UndoManager undo_manager { get; set construct; }
+		public virtual signal void bracket_matched (Gtk.TextIter iter, GtkSource.BracketMatchType state);
+		public signal void highlight_updated (Gtk.TextIter object, Gtk.TextIter p0);
+		[HasEmitter]
+		public virtual signal void redo ();
+		public signal void source_mark_updated (Gtk.TextMark object);
+		[HasEmitter]
+		public virtual signal void undo ();
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class Completion : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected Completion ();
+		public bool add_provider (GtkSource.CompletionProvider provider) throws GLib.Error;
+		public void block_interactive ();
+		public GtkSource.CompletionContext create_context (Gtk.TextIter? position);
+		public static GLib.Quark error_quark ();
+		public unowned GtkSource.CompletionInfo get_info_window ();
+		public unowned GLib.List<weak GtkSource.CompletionProvider> get_providers ();
+		public unowned GtkSource.View get_view ();
+		public void move_window (Gtk.TextIter iter);
+		[NoWrapper]
+		public virtual bool proposal_activated (GtkSource.CompletionProvider provider, GtkSource.CompletionProposal proposal);
+		public bool remove_provider (GtkSource.CompletionProvider provider) throws GLib.Error;
+		public void unblock_interactive ();
+		[NoAccessorMethod]
+		public uint accelerators { get; set construct; }
+		[NoAccessorMethod]
+		public uint auto_complete_delay { get; set construct; }
+		[NoAccessorMethod]
+		public uint proposal_page_size { get; set construct; }
+		[NoAccessorMethod]
+		public uint provider_page_size { get; set construct; }
+		[NoAccessorMethod]
+		public bool remember_info_visibility { get; set construct; }
+		[NoAccessorMethod]
+		public bool select_on_show { get; set construct; }
+		[NoAccessorMethod]
+		public bool show_headers { get; set construct; }
+		[NoAccessorMethod]
+		public bool show_icons { get; set construct; }
+		public GtkSource.View view { get; construct; }
+		public virtual signal void activate_proposal ();
+		[HasEmitter]
+		public virtual signal void hide ();
+		public virtual signal void move_cursor (Gtk.ScrollStep step, int num);
+		public virtual signal void move_page (Gtk.ScrollStep step, int num);
+		public virtual signal void populate_context (GtkSource.CompletionContext context);
+		[HasEmitter]
+		public virtual signal void show ();
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class CompletionContext : GLib.InitiallyUnowned {
+		[CCode (has_construct_function = false)]
+		protected CompletionContext ();
+		public void add_proposals (GtkSource.CompletionProvider provider, GLib.List<weak GtkSource.CompletionProposal> proposals, bool finished);
+		public GtkSource.CompletionActivation get_activation ();
+		public void get_iter (out Gtk.TextIter iter);
+		public GtkSource.CompletionActivation activation { get; set; }
+		[NoAccessorMethod]
+		public GtkSource.Completion completion { owned get; construct; }
+		public Gtk.TextIter iter { get; set; }
+		public virtual signal void cancelled ();
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class CompletionInfo : Gtk.Window, Atk.Implementor, Gtk.Buildable {
+		[CCode (has_construct_function = false)]
+		public CompletionInfo ();
+		public unowned Gtk.Widget get_widget ();
+		public void move_to_iter (Gtk.TextView view, Gtk.TextIter? iter);
+		public void set_widget (Gtk.Widget? widget);
+		public virtual signal void before_show ();
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourcecompletionitem.h")]
+	public class CompletionItem : GLib.Object, GtkSource.CompletionProposal {
+		[CCode (has_construct_function = false)]
+		public CompletionItem (string label, string text, Gdk.Pixbuf? icon, string? info);
+		[CCode (has_construct_function = false)]
+		public CompletionItem.from_stock (string? label, string text, string stock, string? info);
+		[CCode (has_construct_function = false)]
+		public CompletionItem.with_markup (string markup, string text, Gdk.Pixbuf? icon, string? info);
+		[NoAccessorMethod]
+		public Gdk.Pixbuf icon { owned get; set; }
+		[NoAccessorMethod]
+		public string info { owned get; set; }
+		[NoAccessorMethod]
+		public string label { owned get; set; }
+		[NoAccessorMethod]
+		public string markup { owned get; set; }
+		[NoAccessorMethod]
+		public string text { owned get; set; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class CompletionWords : GLib.Object, GtkSource.CompletionProvider {
+		[CCode (has_construct_function = false)]
+		public CompletionWords (string? name, Gdk.Pixbuf? icon);
+		public void register (Gtk.TextBuffer buffer);
+		public void unregister (Gtk.TextBuffer buffer);
+		[NoAccessorMethod]
+		public Gdk.Pixbuf icon { owned get; set construct; }
+		[NoAccessorMethod]
+		public int interactive_delay { get; set construct; }
+		[NoAccessorMethod]
+		public uint minimum_word_size { get; set construct; }
+		[NoAccessorMethod]
+		public string name { owned get; set construct; }
+		[NoAccessorMethod]
+		public int priority { get; set construct; }
+		[NoAccessorMethod]
+		public uint proposals_batch_size { get; set construct; }
+		[NoAccessorMethod]
+		public uint scan_batch_size { get; set construct; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class Gutter : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected Gutter ();
+		public void get_padding (int xpad, int ypad);
+		public unowned Gdk.Window get_window ();
+		public bool insert (GtkSource.GutterRenderer renderer, int position);
+		public void queue_draw ();
+		public void remove (GtkSource.GutterRenderer renderer);
+		public void reorder (GtkSource.GutterRenderer renderer, int position);
+		public void set_padding (int xpad, int ypad);
+		[NoAccessorMethod]
+		public GtkSource.View view { owned get; construct; }
+		[NoAccessorMethod]
+		public Gtk.TextWindowType window_type { get; construct; }
+		[NoAccessorMethod]
+		public int xpad { get; set construct; }
+		[NoAccessorMethod]
+		public int ypad { get; set construct; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class GutterRenderer : GLib.InitiallyUnowned {
+		[CCode (has_construct_function = false)]
+		protected GutterRenderer ();
+		public virtual void activate (Gtk.TextIter iter, Gdk.Rectangle area, Gdk.Event event);
+		public virtual void begin (Cairo.Context cr, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gtk.TextIter start, Gtk.TextIter end);
+		[NoWrapper]
+		public virtual void change_buffer (Gtk.TextBuffer old_buffer);
+		[NoWrapper]
+		public virtual void change_view (Gtk.TextView old_view);
+		public virtual void draw (Cairo.Context cr, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gtk.TextIter start, Gtk.TextIter end, GtkSource.GutterRendererState state);
+		public virtual void end ();
+		public void get_alignment (out unowned float? xalign, out unowned float? yalign);
+		public GtkSource.GutterRendererAlignmentMode get_alignment_mode ();
+		public bool get_background (out unowned Gdk.RGBA? color);
+		public void get_padding (out unowned int? xpad, out unowned int? ypad);
+		public int get_size ();
+		public unowned Gtk.TextView get_view ();
+		public bool get_visible ();
+		public Gtk.TextWindowType get_window_type ();
+		public virtual bool query_activatable (Gtk.TextIter iter, Gdk.Rectangle area, Gdk.Event event);
+		public virtual bool query_tooltip (Gtk.TextIter iter, Gdk.Rectangle area, int x, int y, Gtk.Tooltip tooltip);
+		public void set_alignment (float xalign, float yalign);
+		public void set_alignment_mode (GtkSource.GutterRendererAlignmentMode mode);
+		public void set_background (Gdk.RGBA? color);
+		public void set_padding (int xpad, int ypad);
+		public void set_size (int size);
+		public void set_visible (bool visible);
+		public GtkSource.GutterRendererAlignmentMode alignment_mode { get; set construct; }
+		[NoAccessorMethod]
+		public Gdk.RGBA background_rgba { get; set; }
+		[NoAccessorMethod]
+		public bool background_set { get; set construct; }
+		public int size { get; set construct; }
+		public Gtk.TextView view { get; }
+		public bool visible { get; set construct; }
+		public Gtk.TextWindowType window_type { get; }
+		[NoAccessorMethod]
+		public float xalign { get; set construct; }
+		[NoAccessorMethod]
+		public int xpad { get; set construct; }
+		[NoAccessorMethod]
+		public float yalign { get; set construct; }
+		[NoAccessorMethod]
+		public int ypad { get; set construct; }
+		[HasEmitter]
+		public virtual signal void query_data (Gtk.TextIter start, Gtk.TextIter end, GtkSource.GutterRendererState state);
+		[HasEmitter]
+		public virtual signal void queue_draw ();
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class GutterRendererPixbuf : GtkSource.GutterRenderer {
+		[CCode (type = "GtkSourceGutterRenderer*", has_construct_function = false)]
+		public GutterRendererPixbuf ();
+		public unowned GLib.Icon get_gicon ();
+		public unowned string get_icon_name ();
+		public unowned Gdk.Pixbuf get_pixbuf ();
+		public unowned string get_stock_id ();
+		public void set_gicon (GLib.Icon icon);
+		public void set_icon_name (string icon_name);
+		public void set_pixbuf (Gdk.Pixbuf pixbuf);
+		public void set_stock_id (string stock_id);
+		public GLib.Icon gicon { get; set; }
+		public string icon_name { get; set; }
+		public Gdk.Pixbuf pixbuf { get; set; }
+		public string stock_id { get; set; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class GutterRendererText : GtkSource.GutterRenderer {
+		[CCode (type = "GtkSourceGutterRenderer*", has_construct_function = false)]
+		public GutterRendererText ();
+		public void measure (string text, int width, int height);
+		public void measure_markup (string markup, int width, int height);
+		public void set_markup (string markup, int length);
+		public void set_text (string text, int length);
+		[NoAccessorMethod]
+		public string markup { owned get; set construct; }
+		[NoAccessorMethod]
+		public string text { owned get; set construct; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class Language : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected Language ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] get_globs ();
+		public bool get_hidden ();
+		public unowned string get_id ();
+		public unowned string get_metadata (string name);
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] get_mime_types ();
+		public unowned string get_name ();
+		public unowned string get_section ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] get_style_ids ();
+		public unowned string get_style_name (string style_id);
+		public bool hidden { get; }
+		public string id { get; }
+		public string name { get; }
+		public string section { get; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class LanguageManager : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public LanguageManager ();
+		public static unowned GtkSource.LanguageManager get_default ();
+		public unowned GtkSource.Language get_language (string id);
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_language_ids ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_search_path ();
+		public unowned GtkSource.Language guess_language (string? filename, string? content_type);
+		public void set_search_path ([CCode (array_length = false, array_null_terminated = true)] string[]? dirs);
+		public string[] language_ids { get; }
+		public string[] search_path { get; set; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class Mark : Gtk.TextMark {
+		[CCode (has_construct_function = false)]
+		public Mark (string name, string category);
+		public unowned string get_category ();
+		public unowned GtkSource.Mark next (string? category);
+		public unowned GtkSource.Mark prev (string category);
+		public string category { get; construct; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class MarkAttributes : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public MarkAttributes ();
+		public bool get_background (out Gdk.RGBA background);
+		public unowned GLib.Icon get_gicon ();
+		public unowned string get_icon_name ();
+		public unowned Gdk.Pixbuf get_pixbuf ();
+		public unowned string get_stock_id ();
+		public string get_tooltip_markup (GtkSource.Mark mark);
+		public string get_tooltip_text (GtkSource.Mark mark);
+		public unowned Gdk.Pixbuf render_icon (Gtk.Widget widget, int size);
+		public void set_background (Gdk.RGBA background);
+		public void set_gicon (GLib.Icon gicon);
+		public void set_icon_name (string icon_name);
+		public void set_pixbuf (Gdk.Pixbuf pixbuf);
+		public void set_stock_id (string stock_id);
+		public Gdk.RGBA background { get; set; }
+		public GLib.Icon gicon { get; set; }
+		public string icon_name { get; set; }
+		public Gdk.Pixbuf pixbuf { get; set; }
+		public string stock_id { get; set; }
+		public signal string query_tooltip_markup (GtkSource.Mark object);
+		public signal string query_tooltip_text (GtkSource.Mark object);
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class PrintCompositor : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public PrintCompositor (GtkSource.Buffer buffer);
+		public void draw_page (Gtk.PrintContext context, int page_nr);
+		[CCode (has_construct_function = false)]
+		public PrintCompositor.from_view (GtkSource.View view);
+		public string get_body_font_name ();
+		public double get_bottom_margin (Gtk.Unit unit);
+		public unowned GtkSource.Buffer get_buffer ();
+		public string get_footer_font_name ();
+		public string get_header_font_name ();
+		public bool get_highlight_syntax ();
+		public double get_left_margin (Gtk.Unit unit);
+		public string get_line_numbers_font_name ();
+		public int get_n_pages ();
+		public double get_pagination_progress ();
+		public bool get_print_footer ();
+		public bool get_print_header ();
+		public uint get_print_line_numbers ();
+		public double get_right_margin (Gtk.Unit unit);
+		public uint get_tab_width ();
+		public double get_top_margin (Gtk.Unit unit);
+		public Gtk.WrapMode get_wrap_mode ();
+		public bool paginate (Gtk.PrintContext context);
+		public void set_body_font_name (string font_name);
+		public void set_bottom_margin (double margin, Gtk.Unit unit);
+		public void set_footer_font_name (string? font_name);
+		public void set_footer_format (bool separator, string? left, string? center, string? right);
+		public void set_header_font_name (string? font_name);
+		public void set_header_format (bool separator, string? left, string? center, string? right);
+		public void set_highlight_syntax (bool highlight);
+		public void set_left_margin (double margin, Gtk.Unit unit);
+		public void set_line_numbers_font_name (string? font_name);
+		public void set_print_footer (bool print);
+		public void set_print_header (bool print);
+		public void set_print_line_numbers (uint interval);
+		public void set_right_margin (double margin, Gtk.Unit unit);
+		public void set_tab_width (uint width);
+		public void set_top_margin (double margin, Gtk.Unit unit);
+		public void set_wrap_mode (Gtk.WrapMode wrap_mode);
+		public string body_font_name { owned get; set; }
+		public GtkSource.Buffer buffer { get; construct; }
+		public string footer_font_name { owned get; set; }
+		public string header_font_name { owned get; set; }
+		public bool highlight_syntax { get; set; }
+		public string line_numbers_font_name { owned get; set; }
+		public int n_pages { get; }
+		public bool print_footer { get; set; }
+		public bool print_header { get; set; }
+		public uint print_line_numbers { get; set; }
+		public uint tab_width { get; set; }
+		public Gtk.WrapMode wrap_mode { get; set; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class Style : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected Style ();
+		public GtkSource.Style copy ();
+		[NoAccessorMethod]
+		public string background { owned get; construct; }
+		[NoAccessorMethod]
+		public bool background_set { get; construct; }
+		[NoAccessorMethod]
+		public bool bold { get; construct; }
+		[NoAccessorMethod]
+		public bool bold_set { get; construct; }
+		[NoAccessorMethod]
+		public string foreground { owned get; construct; }
+		[NoAccessorMethod]
+		public bool foreground_set { get; construct; }
+		[NoAccessorMethod]
+		public bool italic { get; construct; }
+		[NoAccessorMethod]
+		public bool italic_set { get; construct; }
+		[NoAccessorMethod]
+		public string line_background { owned get; construct; }
+		[NoAccessorMethod]
+		public bool line_background_set { get; construct; }
+		[NoAccessorMethod]
+		public bool strikethrough { get; construct; }
+		[NoAccessorMethod]
+		public bool strikethrough_set { get; construct; }
+		[NoAccessorMethod]
+		public bool underline { get; construct; }
+		[NoAccessorMethod]
+		public bool underline_set { get; construct; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class StyleScheme : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected StyleScheme ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_authors ();
+		public unowned string get_description ();
+		public unowned string get_filename ();
+		public unowned string get_id ();
+		public unowned string get_name ();
+		public unowned GtkSource.Style get_style (string style_id);
+		public string description { get; }
+		public string filename { get; }
+		public string id { get; construct; }
+		public string name { get; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class StyleSchemeManager : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public StyleSchemeManager ();
+		public void append_search_path (string path);
+		public void force_rescan ();
+		public static unowned GtkSource.StyleSchemeManager get_default ();
+		public unowned GtkSource.StyleScheme get_scheme (string scheme_id);
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_scheme_ids ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_search_path ();
+		public void prepend_search_path (string path);
+		public void set_search_path ([CCode (array_length = false, array_null_terminated = true)] string[]? path);
+		public string[] scheme_ids { get; }
+		public string[] search_path { get; set; }
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public class View : Gtk.TextView, Atk.Implementor, Gtk.Buildable, Gtk.Scrollable {
+		[CCode (type = "GtkWidget*", has_construct_function = false)]
+		public View ();
+		public bool get_auto_indent ();
+		public unowned GtkSource.Completion get_completion ();
+		public GtkSource.DrawSpacesFlags get_draw_spaces ();
+		public unowned GtkSource.Gutter get_gutter (Gtk.TextWindowType window_type);
+		public bool get_highlight_current_line ();
+		public bool get_indent_on_tab ();
+		public int get_indent_width ();
+		public bool get_insert_spaces_instead_of_tabs ();
+		public unowned GtkSource.MarkAttributes get_mark_attributes (string category, int priority);
+		public uint get_right_margin_position ();
+		public bool get_show_line_marks ();
+		public bool get_show_line_numbers ();
+		public bool get_show_right_margin ();
+		public GtkSource.SmartHomeEndType get_smart_home_end ();
+		public uint get_tab_width ();
+		public uint get_visual_column (Gtk.TextIter iter);
+		public void set_auto_indent (bool enable);
+		public void set_draw_spaces (GtkSource.DrawSpacesFlags flags);
+		public void set_highlight_current_line (bool hl);
+		public void set_indent_on_tab (bool enable);
+		public void set_indent_width (int width);
+		public void set_insert_spaces_instead_of_tabs (bool enable);
+		public void set_mark_attributes (string category, GtkSource.MarkAttributes attributes, int priority);
+		public void set_right_margin_position (uint pos);
+		public void set_show_line_marks (bool show);
+		public void set_show_line_numbers (bool show);
+		public void set_show_right_margin (bool show);
+		public void set_smart_home_end (GtkSource.SmartHomeEndType smart_he);
+		public void set_tab_width (uint width);
+		[CCode (type = "GtkWidget*", has_construct_function = false)]
+		public View.with_buffer (GtkSource.Buffer buffer);
+		public bool auto_indent { get; set; }
+		public GtkSource.Completion completion { get; }
+		public GtkSource.DrawSpacesFlags draw_spaces { get; set; }
+		public bool highlight_current_line { get; set; }
+		public bool indent_on_tab { get; set; }
+		public int indent_width { get; set; }
+		public bool insert_spaces_instead_of_tabs { get; set; }
+		public uint right_margin_position { get; set; }
+		public bool show_line_marks { get; set; }
+		public bool show_line_numbers { get; set; }
+		public bool show_right_margin { get; set; }
+		public GtkSource.SmartHomeEndType smart_home_end { get; set; }
+		public uint tab_width { get; set; }
+		public virtual signal void line_mark_activated (Gtk.TextIter iter, Gdk.Event event);
+		public virtual signal void move_lines (bool copy, int step);
+		public virtual signal void move_words (int step);
+		public virtual signal void redo ();
+		public virtual signal void show_completion ();
+		public virtual signal void undo ();
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public interface CompletionProposal : GLib.Object {
+		public abstract bool equal (GtkSource.CompletionProposal other);
+		public abstract unowned Gdk.Pixbuf get_icon ();
+		public abstract string get_info ();
+		public abstract string get_label ();
+		public abstract string get_markup ();
+		public abstract string get_text ();
+		public abstract uint hash ();
+		[HasEmitter]
+		public virtual signal void changed ();
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public interface CompletionProvider : GLib.Object {
+		public abstract bool activate_proposal (GtkSource.CompletionProposal proposal, Gtk.TextIter iter);
+		public abstract GtkSource.CompletionActivation get_activation ();
+		public abstract unowned Gdk.Pixbuf get_icon ();
+		public abstract unowned Gtk.Widget get_info_widget (GtkSource.CompletionProposal proposal);
+		public abstract int get_interactive_delay ();
+		public abstract string get_name ();
+		public abstract int get_priority ();
+		public abstract bool get_start_iter (GtkSource.CompletionContext context, GtkSource.CompletionProposal proposal, Gtk.TextIter iter);
+		public abstract bool match (GtkSource.CompletionContext context);
+		public abstract void populate (GtkSource.CompletionContext context);
+		public abstract void update_info (GtkSource.CompletionProposal proposal, GtkSource.CompletionInfo info);
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public interface UndoManager : GLib.Object {
+		public abstract void begin_not_undoable_action ();
+		public abstract bool can_redo ();
+		public abstract bool can_undo ();
+		public abstract void end_not_undoable_action ();
+		public abstract void redo ();
+		public abstract void undo ();
+		[HasEmitter]
+		public virtual signal void can_redo_changed ();
+		[HasEmitter]
+		public virtual signal void can_undo_changed ();
+	}
+	[CCode (cprefix = "GTK_SOURCE_BRACKET_MATCH_", cheader_filename = "gtksourceview/gtksourceview.h")]
+	public enum BracketMatchType {
+		NONE,
+		OUT_OF_RANGE,
+		NOT_FOUND,
+		FOUND
+	}
+	[CCode (cprefix = "GTK_SOURCE_COMPLETION_ACTIVATION_", cheader_filename = "gtksourceview/gtksourceview.h")]
+	[Flags]
+	public enum CompletionActivation {
+		NONE,
+		INTERACTIVE,
+		USER_REQUESTED
+	}
+	[CCode (cprefix = "GTK_SOURCE_DRAW_SPACES_", cheader_filename = "gtksourceview/gtksourceview.h")]
+	[Flags]
+	public enum DrawSpacesFlags {
+		SPACE,
+		TAB,
+		NEWLINE,
+		NBSP,
+		LEADING,
+		TEXT,
+		TRAILING,
+		ALL
+	}
+	[CCode (cprefix = "GTK_SOURCE_GUTTER_RENDERER_ALIGNMENT_MODE_", cheader_filename = "gtksourceview/gtksourceview.h")]
+	public enum GutterRendererAlignmentMode {
+		CELL,
+		FIRST,
+		LAST
+	}
+	[CCode (cprefix = "GTK_SOURCE_GUTTER_RENDERER_STATE_", cheader_filename = "gtksourceview/gtksourceview.h")]
+	[Flags]
+	public enum GutterRendererState {
+		NORMAL,
+		CURSOR,
+		PRELIT,
+		SELECTED
+	}
+	[CCode (cprefix = "GTK_SOURCE_SMART_HOME_END_", cheader_filename = "gtksourceview/gtksourceview.h")]
+	public enum SmartHomeEndType {
+		DISABLED,
+		BEFORE,
+		AFTER,
+		ALWAYS
+	}
+	[CCode (cprefix = "GTK_SOURCE_VIEW_GUTTER_POSITION_", cheader_filename = "gtksourceview/gtksourceview.h")]
+	public enum ViewGutterPosition {
+		LINES,
+		MARKS
+	}
+	[CCode (cprefix = "GTK_SOURCE_COMPLETION_ERROR_", cheader_filename = "gtksourceview/gtksourceview.h")]
+	public errordomain CompletionError {
+		ALREADY_BOUND,
+		NOT_BOUND,
+	}
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public const string COMPLETION_CAPABILITY_AUTOMATIC;
+	[CCode (cheader_filename = "gtksourceview/gtksourceview.h")]
+	public const string COMPLETION_CAPABILITY_INTERACTIVE;
+}
diff --git a/vapi/vte-2.90.vapi b/vapi/vte-2.90.vapi
new file mode 100644
index 0000000..715a421
--- /dev/null
+++ b/vapi/vte-2.90.vapi
@@ -0,0 +1,230 @@
+/* vte-2.90.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "Vte", lower_case_cprefix = "vte_", gir_namespace = "Vte", gir_version = "2.90")]
+namespace Vte {
+	[CCode (type_id = "vte_pty_get_type ()", cheader_filename = "vte/vte.h")]
+	public class Pty : GLib.Object, GLib.Initable {
+		[CCode (has_construct_function = false)]
+		public Pty (Vte.PtyFlags flags) throws GLib.Error;
+		public void child_setup ();
+		public void close ();
+		public static GLib.Quark error_quark ();
+		[CCode (has_construct_function = false)]
+		public Pty.foreign (owned int fd) throws GLib.Error;
+		public int get_fd ();
+		public bool get_size (out int rows, out int columns) throws GLib.Error;
+		public bool set_size (int rows, int columns) throws GLib.Error;
+		public void set_term (string? emulation);
+		public bool set_utf8 (bool utf8) throws GLib.Error;
+		public int fd { get; construct; }
+		[NoAccessorMethod]
+		public string term { owned get; set; }
+	}
+	[CCode (type_id = "vte_terminal_get_type ()", cheader_filename = "vte/vte.h")]
+	public class Terminal : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.Scrollable {
+		[CCode (has_construct_function = false)]
+		public Terminal ();
+		public void copy_primary ();
+		public void feed (string data, long length);
+		public void feed_child (string text, long length);
+		public void feed_child_binary (string data, long length);
+		public bool fork_command_full (Vte.PtyFlags pty_flags, string? working_directory, [CCode (array_length = false, array_null_terminated = true)] string[] argv, [CCode (array_length = false, array_null_terminated = true)] string[]? envv, GLib.SpawnFlags spawn_flags, [CCode (delegate_target_pos = 6.5)] GLib.SpawnChildSetupFunc? child_setup, out GLib.Pid child_pid) throws GLib.Error;
+		public bool get_allow_bold ();
+		public bool get_audible_bell ();
+		public long get_char_height ();
+		public long get_char_width ();
+		public int get_child_exit_status ();
+		public long get_column_count ();
+		public Vte.TerminalCursorBlinkMode get_cursor_blink_mode ();
+		public void get_cursor_position (out long column, long row);
+		public Vte.TerminalCursorShape get_cursor_shape ();
+		public unowned string get_default_emulation ();
+		public unowned string get_emulation ();
+		public unowned string get_encoding ();
+		public unowned Pango.FontDescription get_font ();
+		public bool get_has_selection ();
+		public unowned string get_icon_title ();
+		public bool get_mouse_autohide ();
+		public unowned Vte.Pty get_pty_object ();
+		public long get_row_count ();
+		public unowned string get_status_line ();
+		public bool get_visible_bell ();
+		public unowned string get_window_title ();
+		public void im_append_menuitems (Gtk.MenuShell menushell);
+		public bool is_word_char (unichar c);
+		public int match_add_gregex (GLib.Regex regex, GLib.RegexMatchFlags flags);
+		public string match_check (long column, long row, out int tag);
+		public void match_clear_all ();
+		public void match_remove (int tag);
+		public void match_set_cursor (int tag, Gdk.Cursor? cursor);
+		public void match_set_cursor_name (int tag, string cursor_name);
+		public void match_set_cursor_type (int tag, Gdk.CursorType cursor_type);
+		public void paste_primary ();
+		public Vte.Pty pty_new (Vte.PtyFlags flags) throws GLib.Error;
+		public void reset (bool clear_tabstops, bool clear_history);
+		public bool search_find_next ();
+		public bool search_find_previous ();
+		public unowned GLib.Regex search_get_gregex ();
+		public bool search_get_wrap_around ();
+		public void search_set_gregex (GLib.Regex? regex);
+		public void search_set_wrap_around (bool wrap_around);
+		public void select_all ();
+		public void select_none ();
+		public void set_allow_bold (bool allow_bold);
+		public void set_audible_bell (bool is_audible);
+		public void set_background_image (Gdk.Pixbuf? image);
+		public void set_background_image_file (string path);
+		public void set_background_saturation (double saturation);
+		public void set_background_tint_color (Gdk.Color color);
+		public void set_background_transparent (bool transparent);
+		public void set_backspace_binding (Vte.TerminalEraseBinding binding);
+		public void set_color_background (Gdk.Color background);
+		public void set_color_background_rgba (Gdk.RGBA background);
+		public void set_color_bold (Gdk.Color bold);
+		public void set_color_bold_rgba (Gdk.RGBA? bold);
+		public void set_color_cursor (Gdk.Color? cursor_background);
+		public void set_color_cursor_rgba (Gdk.RGBA? cursor_background);
+		public void set_color_dim (Gdk.Color dim);
+		public void set_color_dim_rgba (Gdk.RGBA? dim);
+		public void set_color_foreground (Gdk.Color foreground);
+		public void set_color_foreground_rgba (Gdk.RGBA foreground);
+		public void set_color_highlight (Gdk.Color? highlight_background);
+		public void set_color_highlight_rgba (Gdk.RGBA? highlight_background);
+		public void set_colors (Gdk.Color? foreground, Gdk.Color? background, [CCode (array_length_type = "glong", array_length_cname = "palette_size", array_length_pos = 3.1)] Gdk.Color[] palette);
+		public void set_colors_rgba (Gdk.RGBA? foreground, Gdk.RGBA? background, [CCode (array_length_type = "gsize", array_length_cname = "palette_size", array_length_pos = 3.1)] Gdk.RGBA[] palette);
+		public void set_cursor_blink_mode (Vte.TerminalCursorBlinkMode mode);
+		public void set_cursor_shape (Vte.TerminalCursorShape shape);
+		public void set_default_colors ();
+		public void set_delete_binding (Vte.TerminalEraseBinding binding);
+		public void set_emulation (string? emulation);
+		public void set_encoding (string? codeset);
+		public void set_font (Pango.FontDescription? font_desc);
+		public void set_font_from_string (string name);
+		public void set_mouse_autohide (bool setting);
+		public void set_opacity (uint16 opacity);
+		public void set_pty_object (Vte.Pty? pty);
+		public void set_scroll_background (bool scroll);
+		public void set_scroll_on_keystroke (bool scroll);
+		public void set_scroll_on_output (bool scroll);
+		public void set_scrollback_lines (long lines);
+		public void set_size (long columns, long rows);
+		public void set_visible_bell (bool is_visible);
+		public void set_word_chars (string spec);
+		public void watch_child (GLib.Pid child_pid);
+		public bool write_contents (GLib.OutputStream stream, Vte.TerminalWriteFlags flags, GLib.Cancellable? cancellable) throws GLib.Error;
+		public bool allow_bold { get; set; }
+		public bool audible_bell { get; set; }
+		[NoAccessorMethod]
+		public string background_image_file { owned get; set; }
+		[NoAccessorMethod]
+		public Gdk.Pixbuf background_image_pixbuf { owned get; set; }
+		[NoAccessorMethod]
+		public double background_opacity { get; set; }
+		[NoAccessorMethod]
+		public double background_saturation { get; set; }
+		[NoAccessorMethod]
+		public Gdk.Color background_tint_color { get; set; }
+		[NoAccessorMethod]
+		public bool background_transparent { get; set; }
+		public string emulation { get; set; }
+		public string encoding { get; set; }
+		[NoAccessorMethod]
+		public Pango.FontDescription font_desc { owned get; set; }
+		public string icon_title { get; }
+		[NoAccessorMethod]
+		public bool pointer_autohide { get; set; }
+		[Deprecated (since = "0.26")]
+		[NoAccessorMethod]
+		public int pty { get; set; }
+		public Vte.Pty pty_object { get; set; }
+		[NoAccessorMethod]
+		public bool scroll_background { get; set; }
+		[NoAccessorMethod]
+		public bool scroll_on_keystroke { get; set; }
+		[NoAccessorMethod]
+		public bool scroll_on_output { get; set; }
+		[NoAccessorMethod]
+		public uint scrollback_lines { get; set; }
+		public bool visible_bell { get; set; }
+		public string window_title { get; }
+		[NoAccessorMethod]
+		public string word_chars { owned get; set; }
+		public virtual signal void beep ();
+		public virtual signal void char_size_changed (uint char_width, uint char_height);
+		public virtual signal void child_exited ();
+		public virtual signal void commit (string text, uint size);
+		public virtual signal void contents_changed ();
+		public virtual signal void copy_clipboard ();
+		public virtual signal void cursor_moved ();
+		public virtual signal void decrease_font_size ();
+		public virtual signal void deiconify_window ();
+		public virtual signal void emulation_changed ();
+		public virtual signal void encoding_changed ();
+		public virtual signal void eof ();
+		public virtual signal void icon_title_changed ();
+		public virtual signal void iconify_window ();
+		public virtual signal void increase_font_size ();
+		public virtual signal void lower_window ();
+		public virtual signal void maximize_window ();
+		public virtual signal void move_window (uint x, uint y);
+		public virtual signal void paste_clipboard ();
+		public virtual signal void raise_window ();
+		public virtual signal void refresh_window ();
+		public virtual signal void resize_window (uint width, uint height);
+		public virtual signal void restore_window ();
+		public virtual signal void selection_changed ();
+		public virtual signal void status_line_changed ();
+		public virtual signal void text_deleted ();
+		public virtual signal void text_inserted ();
+		public virtual signal void text_modified ();
+		public virtual signal void text_scrolled (int delta);
+		public virtual signal void window_title_changed ();
+	}
+	[CCode (cname = "_VteCharAttributes", type_id = "VTE_TYPE__CHARATTRIBUTES", cheader_filename = "vte/vte.h")]
+	public struct _CharAttributes {
+	}
+	[CCode (cprefix = "VTE_PTY_ERROR_", cheader_filename = "vte/vte.h")]
+	public enum PtyError {
+		PTY_HELPER_FAILED,
+		PTY98_FAILED
+	}
+	[CCode (cprefix = "VTE_PTY_", cheader_filename = "vte/vte.h")]
+	[Flags]
+	public enum PtyFlags {
+		NO_LASTLOG,
+		NO_UTMP,
+		NO_WTMP,
+		NO_HELPER,
+		NO_FALLBACK,
+		DEFAULT
+	}
+	[CCode (cprefix = "VTE_CURSOR_BLINK_", cheader_filename = "vte/vte.h")]
+	public enum TerminalCursorBlinkMode {
+		SYSTEM,
+		ON,
+		OFF
+	}
+	[CCode (cprefix = "VTE_CURSOR_SHAPE_", cheader_filename = "vte/vte.h")]
+	public enum TerminalCursorShape {
+		BLOCK,
+		IBEAM,
+		UNDERLINE
+	}
+	[CCode (cprefix = "VTE_ERASE_", cheader_filename = "vte/vte.h")]
+	public enum TerminalEraseBinding {
+		AUTO,
+		ASCII_BACKSPACE,
+		ASCII_DELETE,
+		DELETE_SEQUENCE,
+		TTY
+	}
+	[CCode (cprefix = "VTE_TERMINAL_WRITE_", cheader_filename = "vte/vte.h")]
+	public enum TerminalWriteFlags {
+		[CCode (cname = "VTE_TERMINAL_WRITE_DEFAULT")]
+		TERMINAL_WRITE_DEFAULT
+	}
+	[CCode (cheader_filename = "vte/vte.h", has_target = false)]
+	public delegate bool SelectionFunc (Vte.Terminal terminal, long column, long row, void* data);
+	[CCode (cheader_filename = "vte/vte.h")]
+	public static string get_user_shell ();
+}
openSUSE Build Service is sponsored by