繁体   English   中英

Sublime Text 3插件开发,用于自定义自动完成功能,例如Emmet?

[英]Sublime text 3 plugin development for custom autocomplete like emmet?

我想创建诸如emmet之类的自定义插件来自动完成,并为诸如h2>span .myclass之<div class="myclass"></div> html标签扩展标签,以生成<div class="myclass"></div>

我从开始但没有找到任何文档来跟踪用户类型事件以及如何定义仅适用于html文件的插件范围。

当我尝试在班级内使用print语句时,抛出语法错误

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

我如何在没有打印语句的情况下调试我的插件代码,或者有什么替代崇高插件的方法?

通常,不编写插件来跟踪用户在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()以获得选择/插入位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM