2012-02-18 4 views
1

phsilva's PyLint pluginと似たようなものをgedit 3 pluginと書いています。これは、外部のlintプログラムを呼び出し、現在のドキュメントのコード行を強調表示します。私の質問は、私のプラグインがrun_lintアクションを持っていれば、それをgeditのOnSaveイベントにバインドすることが可能ですか?上にリンクされたドキュメントの利用可能なシグナルのリストにはまだFIXMEの通知があり、APIドキュメントのどこに完全なリストがあるのか​​分かりません。GeditプラグインはOnSaveイベントにバインドできますか?

答えて

2

まあ、誰もこれに答えませんでしたが、私はそれを最終的に考え出しました。これには2つのステップがあります。新しいタブがウィンドウ内に作成され、そのタブにドキュメントが含まれている場合です。このドキュメントには、アクションに接続できる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 
+0

ありがとう!ちょうど私が必要なもの! – rpax

+0

また、https://github.com/janpecha/gedit-on-saveをご覧ください – rpax

関連する問題