我有这段代码
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"
我从这个代码有点过时的页面中得到了它 - here但是我将它从sublimeplugin修改为sublime_plugin所以它没有过时,让它编译(我的意思是保存和加载!)没有错误。我做了一两个其他的调整(比如“编辑”,我看到那里更加错误)。我的版本加载没有错误。
但我无法让它表演......
我想要它,当我执行file..new时,然后将文本打印到控制台。从而表明事件正在被触发。但它并没有这样做 我想要sublime启动时和打开文件时的事件。
最终我想将文件名写入文件。但是,我无法得到任何指示,任何打印到控制台的信息,表明事件已被触发。
此外,如果有某种msgbox是好的,以防万一控制台不在视图中,但这是帮助我看到事件被触发的一个方面
鉴于Matt的回复,更新很好 - 根据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())
答案 0 :(得分:2)
查看Sublime Text 2 API docs,特别是sublime_plugin.EventListener
部分。您所使用的链接是指ST1 API。如果您对定位使用Python 3.3的ST3感兴趣,只需将网址中的2
更改为3
。
在ST2和ST3中,Python API都发生了重大变化,尽管ST3的变化(至少在我的经验中)并没有像1 - >那样完全破坏性。 2个。在您的情况下,方法名称已更改为on_load()
,on_new()
,on_pre_save()
等。
最后,请确保您定义的方法如下:
def on_modified(self, view): # <- note change from "edit"
print view.fileName(), "modified"
edit
不应该在那里,因为我们在这里处理意见。有关更多指示和解释,参考文献的Plugins部分以及the main docs部分应该会有所帮助。但是,我发现最好的学习方法是分解和分析其他工作插件 - Package Control绝对是你的朋友。