2016-10-19 84 views
0

我想創建像emmet這樣的自定義插件來實現自動完成和html標記的標記擴展,例如h2>span.myclass應該導致<div class="myclass"></div>崇高的文字3插件開發自定義自動完成像emmet?

我開始但沒有找到任何跟蹤用戶類型事件的文檔,以及如何定義插件僅適用於html文件的範圍。

當我試圖用我的類,它拋出語法錯誤

def run(self, edit): 
    print "i am in run" 
    self.view.insert(edit, 0, "Hello, World!") 

如何調試我的插件代碼,而不print語句或者是有崇高的插件任何替代內打印語句?

回答

1

通常,人們不編程插件來跟蹤用戶在Sublime Text中鍵入的內容,而是將命令綁定到鍵綁定。然後,當用戶按下該特定鍵時,在鍵綁定的上下文中定義的某些條件下,該命令執行並查看選擇插入符號附近的文本。

Sublime Text插件是在Python 3中開發的,其中print不是語句,而是函數。因此,您需要使用print('I am in "run"')將調試消息輸出到ST控制檯。

例如,如果這是你的插件代碼:

import sublime 
import sublime_plugin 


class ThisIsAnExampleCommand(sublime_plugin.TextCommand): 
    def run(self, edit): 
     print('I am in the "run" method of "ThisIsAnExampleCommand"') 
     self.view.insert(edit, 0, "Hello, World!") 

,那麼你可能定義諸如按鍵綁定:

{ "keys": ["tab"], "command": "this_is_an_example", 
    "context": 
    [ 
     { "key": "selector", "operator": "equal", "operand": "text.html", "match_all": true }, 
     { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 
    ] 
}, 

當用戶按下標籤這會工作,但前提是所有選擇都是空的,正在編輯的當前文件的語法是HTML。

您的插件可以查看self.view.sel()以獲取選擇/插入符號位置。