Submime文本3插件开发自定义自动完成像emmet?

时间:2016-10-19 06:12:31

标签: python sublimetext3

我想创建自定义插件,例如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插件?

1 个答案:

答案 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()以获得选择/插入位置。