Gedit插件可以绑定到OnSave事件吗



我正在编写一个gedit 3插件,类似于phsilva的PyLint插件,它调用外部lint程序并突出显示当前文档中的代码行。我的问题是,如果我的插件有一个run_lint操作,是否可以将其绑定到gedit中的OnSave事件?我在上面链接的文档中的可用信号列表仍然有一个FIXME通知,我很难找到API文档中的完整列表。

嗯,没有人回答这个问题,但我最终找到了答案。有两个步骤,当在包含文档的窗口中创建新选项卡时。该文档具有可以连接到动作的loadedsaved信号。重要的是要记住,每个选项卡都有一个单独的文档,每个文档都需要自己的一组信号和处理程序。

以下是一个概要解决方案,以防对其他人有用:

class FooPlugin(GObject.Object, Gedit.WindowActivatable):
    __gtype_name__ = 'Foo'
    ...
    def do_activate(self):
        self._add_ui()
        self.window.connect('tab-added', self.on_tab_added)
        ...
        return
    def on_tab_added(self, window, tab, data=None):
        doc = tab.get_document()
        doc.connect('saved', self.on_document_saved)
        doc.connect('loaded', self.on_document_loaded)
        return
    def on_document_loaded(self, document, data=None):
        # do something here...
        return
    def on_document_saved(self, document, data=None):
        # do something here...
        return

最新更新