コード例 #1
0
ファイル: engine.py プロジェクト: zackboll/gps
 def init_highlighting(self, f):
     highlighter = self.highlighters.get(f.language(), None)
     if isinstance(highlighter, Highlighter):
         ed = GPS.EditorBuffer.get(f, open=False)
         if ed:
             gtk_ed = get_gtk_buffer(ed)
             if not gtk_ed.highlighting_initialized:
                 highlighter.init_highlighting(ed)
                 highlighter.gtk_highlight(gtk_ed)
コード例 #2
0
ファイル: engine.py プロジェクト: zackboll/gps
    def init_highlighting(self, ed):
        gtk_ed = get_gtk_buffer(ed)
        gtk_ed.highlighting_initialized = True
        gtk_ed.stacks = HighlighterStacks()

        if not hasattr(gtk_ed, "idle_highlight_id"):
            gtk_ed.idle_highlight_id = None

        def action_handler(loc):
            """:type loc: Gtk.TextIter"""
            if gtk_ed.idle_highlight_id:
                GLib.source_remove(gtk_ed.idle_highlight_id)

            # Highlight all the rest of the buffer
            # TODO: Highlight N lines synchronously, and if there are any
            # TODO: remaining, the rest in async
            self.gtk_highlight_region(gtk_ed, loc.get_line())

        # noinspection PyUnusedLocal
        def highlighting_insert_text_before(buf, loc, text, length):
            buf.insert_loc = loc.to_tuple()

        # noinspection PyUnusedLocal
        def highlighting_insert_text(buf, loc, text, length):
            nb_new_lines = len(text.split("\n")) - 1
            itr = buf.iter_from_tuple(buf.insert_loc)
            buf.stacks.insert_newlines(nb_new_lines, itr.get_line())
            action_handler(itr)

        def highlighting_delete_range_before(buf, loc, end):
            buf.nb_deleted_lines = len(
                buf.get_text(loc, end, True).split("\n")
            ) - 1

        # noinspection PyUnusedLocal
        def highlighting_delete_range(buf, loc, end):
            buf.stacks.delete_lines(buf.nb_deleted_lines, loc.get_line())
            action_handler(loc)

        gtk_ed.connect_after("insert-text", highlighting_insert_text)
        gtk_ed.connect_after("delete-range", highlighting_delete_range)
        gtk_ed.connect("delete-range", highlighting_delete_range_before)
        gtk_ed.connect("insert-text", highlighting_insert_text_before)
コード例 #3
0
def test_driver():
    # Simple open/close case
    buf = GPS.EditorBuffer.get(GPS.File("foo.py"))
    gps_assert(count_object("EditorBuffer"), 1, "Initital state")
    buf.close(force=True)
    del buf
    gc.collect()
    gps_assert(count_object("EditorBuffer"), 0,
               "The buffer should have been cleaned")

    # Manual call to get_gtk_buffer
    buf = GPS.EditorBuffer.get(GPS.File("foo.py"))
    gtk_buf = get_gtk_buffer(buf)
    buf.close(force=True)
    del buf
    gc.collect()
    gps_assert(count_object("EditorBuffer"), 1,
               "gtk_buf should still have a reference on buf")
    del gtk_buf
    gc.collect()
    gps_assert(count_object("EditorBuffer"), 0,
               "The last reference should have been gtk_buf")
コード例 #4
0
ファイル: engine.py プロジェクト: zackboll/gps
 def __gps_to_gtk_fun(start, end, *args, **kwargs):
     gtk_ed = get_gtk_buffer(start.buffer())
     gtk_start = gtk_ed.get_iter_at_offset(start.offset())
     gtk_end = gtk_ed.get_iter_at_offset(end.offset())
     fun(gtk_ed, gtk_start, gtk_end, *args, **kwargs)