扩展语法中的自动完成结束 HTML 标记
Auto-Complete Closing HTML Tags in Extended Syntax
我目前正在为我自己的模板引擎开发一个语法高亮插件。文件中的内容基于标准 HTML 语法突出显示,通常在 Sublime Text.
中看到
完成这个绝对不是问题:
...
contexts:
main:
- include: 'scope:text.html.basic'
...
如您所见,语法突出显示是使用(合理的)新 .sublime-syntax
YAML 编写的。突出显示代码中我想突出显示的部分,以及使用其他编程语言突出显示某些部分也不是问题。
我似乎无法弄清楚,但是,如何使 HTML 标记 'auto-complete' 与设置语法时的方式相同到常规 HTML.
例如,如果输入以下内容:
<html>
然后输入:
</
它将自动解析为结束 </html>
标记(前提是中间没有其他标记)。
这是否放在另一个文件中?也许是某种 "plugin definitions file"?
任何正确方向的指示都将不胜感激。从我迄今为止所做的研究来看,我似乎无法找到关于特定主题的任何内容。
执行此操作的命令是 close_tag
并使用以下键绑定触发:
// HTML, XML close tag
{ "keys": ["/"], "command": "close_tag", "args": { "insert_slash": true }, "context":
[
{ "key": "selector", "operator": "equal", "operand": "(text.html, text.xml) - string - comment", "match_all": true },
{ "key": "preceding_text", "operator": "regex_match", "operand": ".*<$", "match_all": true },
{ "key": "setting.auto_close_tags" }
]
}
此处列出的第一个上下文要求文件的语法为 text.hml
或 text.xml
,但在字符串或注释中则不需要。
当您像上面那样 include
范围时,应用于匹配文本的范围取自您包含的范围,但顶级范围是在您的语法定义中定义的范围。
因此,如果您使用 Tools > Developer > Show Scope Names
命令检查作用域,您可能会发现顶级作用域不是 text.html
而是其他东西(上面的语法定义不是不要说那可能是什么)。
如果您在自己的包中使用修改后的范围复制自定义绑定,它应该可以满足您的要求。
我目前正在为我自己的模板引擎开发一个语法高亮插件。文件中的内容基于标准 HTML 语法突出显示,通常在 Sublime Text.
中看到完成这个绝对不是问题:
...
contexts:
main:
- include: 'scope:text.html.basic'
...
如您所见,语法突出显示是使用(合理的)新 .sublime-syntax
YAML 编写的。突出显示代码中我想突出显示的部分,以及使用其他编程语言突出显示某些部分也不是问题。
我似乎无法弄清楚,但是,如何使 HTML 标记 'auto-complete' 与设置语法时的方式相同到常规 HTML.
例如,如果输入以下内容:
<html>
然后输入:
</
它将自动解析为结束 </html>
标记(前提是中间没有其他标记)。
这是否放在另一个文件中?也许是某种 "plugin definitions file"?
任何正确方向的指示都将不胜感激。从我迄今为止所做的研究来看,我似乎无法找到关于特定主题的任何内容。
执行此操作的命令是 close_tag
并使用以下键绑定触发:
// HTML, XML close tag
{ "keys": ["/"], "command": "close_tag", "args": { "insert_slash": true }, "context":
[
{ "key": "selector", "operator": "equal", "operand": "(text.html, text.xml) - string - comment", "match_all": true },
{ "key": "preceding_text", "operator": "regex_match", "operand": ".*<$", "match_all": true },
{ "key": "setting.auto_close_tags" }
]
}
此处列出的第一个上下文要求文件的语法为 text.hml
或 text.xml
,但在字符串或注释中则不需要。
当您像上面那样 include
范围时,应用于匹配文本的范围取自您包含的范围,但顶级范围是在您的语法定义中定义的范围。
因此,如果您使用 Tools > Developer > Show Scope Names
命令检查作用域,您可能会发现顶级作用域不是 text.html
而是其他东西(上面的语法定义不是不要说那可能是什么)。
如果您在自己的包中使用修改后的范围复制自定义绑定,它应该可以满足您的要求。