2013-10-16 69 views
0

我有這樣的代碼困難得到事件的崇高文字工作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" 

我是從它的代碼是有點出帶有日期here的這個頁面,但我修改它sublimeplugin到sublime_plugin所以不過時,使其編譯(我的意思是保存和加載!),沒有錯誤。我做了一兩個其他的調整(比如我看到的「編輯」在那裏更加錯誤)。我的版本加載沒有錯誤。

但我不能讓它執行..

我希望它這樣,當我做file..new,則文本打印到控制檯上。從而表明事件正在被觸發。但它沒有這樣做。
我想要在崇高開始時以及打開文件時使用事件。

最終我想將文件名寫入文件。但是我無法獲得任何指示,任何印在控制檯上的信息都表明事件已經觸發。

此外,如果有某種MSGBOX那簡直太好了以防萬一的控制檯是不在視野,但這是一個側件事,會幫我看看事件被觸發

UPDATE罰款現在給馬特的回覆 - 基於馬特的回覆和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()) 

回答

2

退房崇高文本 API docs,具體上sublime_plugin.EventListener部分。您所參考的鏈接是ST1 API。如果您有興趣定位使用Python 3.3的ST3,只需將URL中的2更改爲3即可。

雖然ST3的變化(至少在我的經驗中)沒有像1 - > 2那樣完全破壞性,但在ST2和ST3中都有顯着的Python API變化。在你的情況下,方法名稱已變更爲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絕對是您的朋友。