phsilva's PyLint plugin과 비슷한 내용의 gedit 3 plugin을 작성 중이며, 외부 lint 프로그램을 호출하고 현재 문서의 코드 행을 강조 표시합니다. 제 질문은, 만약 내 플러그인이 run_lint
액션을 가지고 있다면, 그 플러그인을 gedit의 OnSave
이벤트에 바인딩 할 수 있습니까? 위에 링크 된 문서의 사용 가능한 신호 목록에는 여전히 FIXME
고지가 있으며 API 문서의 스프레드가 전체 목록을 찾을 수있는 곳을 파악하는 데 어려움을 겪고 있습니다.Gedit 플러그인을 OnSave 이벤트에 바인딩 할 수 있습니까?
1
A
답변
2
글쎄, 아무도 이것에 대답하지 못했지만, 나는 결국 그것을 알아 냈다. 이 탭에는 문서가 포함 된 창에서 새 탭을 만들 때 두 단계가 있습니다. 이 문서에는 동작에 연결할 수있는 loaded
및 saved
신호가 있습니다. 각 탭에는 별도의 문서가 있으며 각 문서에는 고유 한 신호 및 처리기 세트가 필요하다는 점을 기억해야합니다.
여기 개요 솔루션입니다, 경우에 다른 사람에게 유용합니다 :
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
감사합니다! 내가 필요한 것! – rpax
또한 https://github.com/janpecha/edit-on-save를 방문 할 수도 있습니다. – rpax