sublime text heredoc 标签的完整列表?
Full list of sublime text heredoc tags?
我注意到 并相应地突出显示了语法。
这是一个简单的示例,其中第一个 heredoc 知道根据 SQL 突出显示语法,但第二个不知道,即使其内容相同。所以可以推导出 sublime 'knows' 第一个是 SQL 因为 heredoc 标签是 SQL
).
问题:可用的 heredoc 标签的完整列表是什么?
注意:这是在 ruby heredoc 中,但我想它可能也适用于其他语言,尽管我无法确认。
这是正在使用的语法定义的函数(在您的例子中,是 Ruby 语法)。或者,如果您愿意,这并不是到处都可以使用的东西,必须有一种语言专门支持它。
因此,此类 heredocs 的列表确实被限制在一个已知列表中,为了了解您需要查看相关语言的语法定义。
对于 Ruby(自 build 3211 起),该列表为 HTML
、SQL
、CSS
、JS
(或 JAVASCRIPT
),以及 RUBY
。在 build 4092 中,语法还包括 SH
(或 SHELL
)。所有其他人(例如上面的 DOC
都是“普通”)。
如果您想更深入地了解它的工作原理,请使用命令面板中的 View Package File
,您可以打开 Ruby/Ruby.sublime-syntax
以查看与该语言匹配的规则。如果你搜索 heredoc
,你会看到一个 context
,其中包含所有匹配它的规则,它通常看起来像这样(在 build 3211 中;它在 build 4092 中更高级):
# heredoc with embedded SQL and indented terminator
- match: '(<<[-~]"?((?:[_\w]+_|)SQL)\b"?)'
scope: punctuation.definition.string.begin.ruby
push: [heredoc-sql, trailing-heredoc-start]
在这种情况下,规则说明后跟 SQL 的 heredoc 说明符应该 push
一个名为 heredoc-sql
的上下文,它就在下面:
heredoc-sql:
- meta_scope: string.unquoted.embedded.sql.ruby
- meta_content_scope: text.sql.embedded.ruby
- match: ^\s*$
scope: punctuation.definition.string.end.ruby
pop: true
- include: scope:source.sql
- include: interpolated-ruby
- include: escaped-char
这里的 include: scope:source.sql
是说语言应该切换到 SQL 模式的魔法调味料。它上面带有 pop
的规则是导致它“退出”heredoc 并返回到 Ruby.
的原因
使用这个公式,可以进行语法修改以包括 Sublime 支持的其他语言。这在 Sublime Text“4”构建中可能更容易实现,其中语法系统增强之一是扩展语法定义的能力。
我注意到
这是一个简单的示例,其中第一个 heredoc 知道根据 SQL 突出显示语法,但第二个不知道,即使其内容相同。所以可以推导出 sublime 'knows' 第一个是 SQL 因为 heredoc 标签是 SQL
).
问题:可用的 heredoc 标签的完整列表是什么?
注意:这是在 ruby heredoc 中,但我想它可能也适用于其他语言,尽管我无法确认。
这是正在使用的语法定义的函数(在您的例子中,是 Ruby 语法)。或者,如果您愿意,这并不是到处都可以使用的东西,必须有一种语言专门支持它。
因此,此类 heredocs 的列表确实被限制在一个已知列表中,为了了解您需要查看相关语言的语法定义。
对于 Ruby(自 build 3211 起),该列表为 HTML
、SQL
、CSS
、JS
(或 JAVASCRIPT
),以及 RUBY
。在 build 4092 中,语法还包括 SH
(或 SHELL
)。所有其他人(例如上面的 DOC
都是“普通”)。
如果您想更深入地了解它的工作原理,请使用命令面板中的 View Package File
,您可以打开 Ruby/Ruby.sublime-syntax
以查看与该语言匹配的规则。如果你搜索 heredoc
,你会看到一个 context
,其中包含所有匹配它的规则,它通常看起来像这样(在 build 3211 中;它在 build 4092 中更高级):
# heredoc with embedded SQL and indented terminator
- match: '(<<[-~]"?((?:[_\w]+_|)SQL)\b"?)'
scope: punctuation.definition.string.begin.ruby
push: [heredoc-sql, trailing-heredoc-start]
在这种情况下,规则说明后跟 SQL 的 heredoc 说明符应该 push
一个名为 heredoc-sql
的上下文,它就在下面:
heredoc-sql:
- meta_scope: string.unquoted.embedded.sql.ruby
- meta_content_scope: text.sql.embedded.ruby
- match: ^\s*$
scope: punctuation.definition.string.end.ruby
pop: true
- include: scope:source.sql
- include: interpolated-ruby
- include: escaped-char
这里的 include: scope:source.sql
是说语言应该切换到 SQL 模式的魔法调味料。它上面带有 pop
的规则是导致它“退出”heredoc 并返回到 Ruby.
使用这个公式,可以进行语法修改以包括 Sublime 支持的其他语言。这在 Sublime Text“4”构建中可能更容易实现,其中语法系统增强之一是扩展语法定义的能力。