Затруднение получения событий для работы в Sublime Text 2

У меня есть этот код

import sublime, sublime_plugin 

class EventDump(sublime_plugin.EventListener):
 def onLoad(self, edit):
 print "dffdffdfffdfddfff" 
 print view.fileName(), "just got loaded" 

 def onPreSave(self, edit): 
 print self.view.fileName(), "is about to be saved" 

 def onPostSave(self, edit): 
 print self.view.fileName(), "just got saved" 

 def onNew(self, edit): 
 print "dfdfdfdfdfdff"
 print "new file" 

 def onModified(self, edit): 
 print view.fileName(), "modified" 

 def onActivated(self, view): 
 print view.fileName(), "is now the active view" 

 def onClose(self, view): 
 print view.fileName(), "is no more" 

 def onClone(self, view): 
 print view.fileName(), "just got cloned"

Я получил его с этой страницы, чей код немного отличается от date- здесь, но я поменял его с sublimeplugin на sublime_plugin, чтобы он не устарел, чтобы он компилировал (я имею в виду сохранение и загрузку!) Без ошибок. И я сделал одну или две другие корректировки (например, "редактирование", которое я вижу, еще более ошибочно). Моя версия загружается без ошибок.

Но я не могу заставить его работать.

Я хочу, чтобы это было, когда я делаю file..new, затем текст печатается на консоль. Таким образом, показывается, что событие запускается. Но это не так. Я хочу, чтобы события происходили, когда начинались возвышенные и когда файлы открывались.

В конечном итоге я хочу записать имя файла в файл. Но я не могу получить ни одного указания, ничего напечатанного на консоли, показывая, что событие было вызвано.

Кроме того, если бы существовал какой-то msgbox, который был бы великолепным на случай, если консоль не находится в поле зрения, но возникает побочная вещь, которая поможет мне увидеть события.

UPDATE fine теперь предоставлено Matt reply-. Основываясь на ответе Matt и документах ST2, я теперь обновил свой код, чтобы каждая функция была такой. Я не получаю ошибок, загружающих его, и события запускаются, и он печатает имя файла. Итак, сделано!

def on_post_save(self, view):
 print "done on_post_save"
 print "filename is: "+str(view.file_name()) 

def on_new(self, view): 
 print "done on_new"
 print "filename is: "+str(view.file_name())
1 ответ

Проверьте документы API Sublime Text 2, в частности раздел sublime_plugin.EventListener. Ссылка, на которую вы ссылались, упоминается в ST1 API. Если вы заинтересованы в таргетинге на ST3, который использует Python 3.3, просто измените значение 2 в URL-адресе на 3.

В API Python произошли значительные изменения как в ST2, так и в ST3, хотя изменения ST3 (по крайней мере, по моему опыту) были не столь разрушительными, как 1 → 2. В вашем случае имена методов были изменены на on_load(), on_new(), on

save() и т.д.

Наконец, убедитесь, что вы определяете свои методы следующим образом:

def on_modified(self, view): # <- note change from "edit" 
 print view.fileName(), "modified"

edit не должно быть там, так как мы имеем дело с представлениями здесь. Для получения дополнительных указаний и объяснений раздел " Плагины " ссылки, а также в основных документах должен быть полезен. Но я нашел лучший способ научиться - разобрать и проанализировать другие рабочие плагины - Package Control определенно ваш друг.

licensed under cc by-sa 3.0 with attribution.