我想创建自定义插件,例如emmet,用于自动完成和标记扩展,用于html标记,例如h2>span
.myclass应该生成<div class="myclass"></div>
。
我开始时没有找到任何跟踪用户类型事件的文档,以及如何定义插件的范围仅适用于html文件。
当我尝试在我的类中使用print语句时,它会抛出语法错误
def run(self, edit):
print "i am in run"
self.view.insert(edit, 0, "Hello, World!")
如何在没有print语句的情况下调试我的插件代码,或者有没有替代sublime插件?
答案 0 :(得分: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 },
]
},
当用户按下 Tab 时会运行,但仅当所有选择都为空时,正在编辑的当前文件的语法为HTML。
您的插件可以查看self.view.sel()
以获得选择/插入位置。