难以让事件在Sublime Text 2中工作

时间:2013-10-16 14:32:23

标签: python sublimetext2

我有这段代码

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()) 

1 个答案:

答案 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绝对是你的朋友。