0

我有这个代码

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"  

我从这个页面得到它,它的代码有点过时了——但是我把它从sublimeplugin修改为 sublime_plugin 所以它没有过时,使它编译(我的意思是保存和加载!)没有错误。我还做了一两个其他调整(比如我看到的“编辑”在那里更错误)。我的版本加载没有错误。

但我不能让它发挥..

我希望这样当我执行 file..new 时,文本会打印到控制台。从而表明事件正在被触发。但它没有这样做。
我想要 sublime 何时启动和文件何时打开的事件。

最终我想将文件名写入文件。但我无法得到任何指示,任何打印到控制台的东西,表明事件已被触发。

此外,如果有某种 msgbox 会很棒,以防控制台不在视图中,但这是一个可以帮助我看到事件被触发的副产品

鉴于马特的回复,现在更新很好 - 基于马特的回复和 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()) 
4

1 回答 1

2

查看 Sublime Text 2 API 文档,特别是关于sublime_plugin.EventListener. 您所在的链接引用了 ST1 API。如果您对使用 Python 3.3 的 ST3 感兴趣,只需2将 URL 中的 更改为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不应该在那里,因为我们在这里处理视图。有关更多指示和解释,参考的插件部分以及主要文档应该会有所帮助。但是,我发现最好的学习方法是拆开并分析其他工作插件 -包控制绝对是你的朋友。

于 2013-10-16T17:38:54.520 回答