2012-02-18 3 views
1

phsilva's PyLint plugin과 비슷한 내용의 gedit 3 plugin을 작성 중이며, 외부 lint 프로그램을 호출하고 현재 문서의 코드 행을 강조 표시합니다. 제 질문은, 만약 내 플러그인이 run_lint 액션을 가지고 있다면, 그 플러그인을 gedit의 OnSave 이벤트에 바인딩 할 수 있습니까? 위에 링크 된 문서의 사용 가능한 신호 목록에는 여전히 FIXME 고지가 있으며 API 문서의 스프레드가 전체 목록을 찾을 수있는 곳을 파악하는 데 어려움을 겪고 있습니다.Gedit 플러그인을 OnSave 이벤트에 바인딩 할 수 있습니까?

답변

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/edit-on-save를 방문 할 수도 있습니다. – rpax

관련 문제