元数据文件
元数据是可以通过作用域选择器分配给特定文本部分的参数。
这些参数可以用于多种目的;例如
- 指定当前注释标记,即使在嵌入的源代码中也是如此,这样你就可以在任何语法中切换注释,
- 定义自动缩进规则,
- 标记 Sublime Text 允许你快速浏览的符号。
此外,代码片段可以访问在 shellVariables
设置中声明的元数据,这使你能够创建根据使用位置具有不同内容的代码片段。
文件格式
元数据文件使用 .tmPreferences
扩展名,并使用属性列表格式。文件名被 Sublime Text 忽略。
元数据文件继承自 TextMate。
示例
以下是一个元数据文件的示例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>JavaScript Metadata</string>
<key>scope</key>
<string>source.js</string>
<key>settings</key>
<dict>
<key>decreaseIndentPattern</key>
<string>^(.*\*/)?\s*\}.*$</string>
<key>increaseIndentPattern</key>
<string>^.*\{[^}"']*$</string>
<key>bracketIndentNextLinePattern</key>
<string>(?x)
^ \s* \b(if|while|else)\b [^;]* $
| ^ \s* \b(for)\b .* $
</string>
<key>shellVariables</key>
<array>
<dict>
<key>name</key>
<string>TM_COMMENT_START</string>
<key>value</key>
<string>// </string>
</dict>
<dict>
<key>name</key>
<string>TM_COMMENT_START_2</string>
<key>value</key>
<string>/*</string>
</dict>
<dict>
<key>name</key>
<string>TM_COMMENT_END_2</string>
<key>value</key>
<string>*/</string>
</dict>
</array>
</dict>
<key>uuid</key>
<string>BC062860-3346-4D3B-8421-C5543F83D11F</string>
</dict>
</plist>
示例文件结合了几种类型的元数据。
元数据文件结构
所有元数据文件都共享相同的顶层结构,该结构继承自属性列表格式。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
</dict>
</plist>
Sublime Text 在元数据文件中使用以下顶层键;默认情况下,所有其他键都被忽略。
name
: 可选。 元数据的名称。被 Sublime Text 忽略。
<key>name</key>
<string>Shell Variables</string>
scope
: 必需。 作用域选择器,用于确定元数据应该在哪个上下文中可用。
<key>scope</key>
<string>source.python</string>
settings
: 必需。 设置的容器。
<key>settings</key>
<dict>
...
</dict>
uuid
: 可选。 文件的唯一标识符。被 Sublime Text 忽略。
<key>uuid</key>
<string>BC062860-3346-4D3B-8421-C5543F83D11F</string>
settings
的子元素
settings
元素可以包含用于不同目的的子元素,这些子元素将在以下部分中分组。
某些子元素默认情况下与它们关联着某些功能,而其他子元素只能通过API访问。
缩进选项
缩进选项控制自动缩进机制的各个方面。
increaseIndentPattern
: 正则表达式。 如果它与当前行匹配,则下一行将缩进一个级别。
<key>increaseIndentPattern</key>
<string>insert regex here</string>
decreaseIndentPattern
: 正则表达式。 如果当前行匹配此正则表达式,则下一行将缩进一级。
<key>decreaseIndentPattern</key>
<string>insert regex here</string>
bracketIndentNextLinePattern
: 正则表达式。 如果当前行匹配此正则表达式,则只有下一行将缩进一级。
<key>bracketIndentNextLinePattern</key>
<string>insert regex here</string>
disableIndentNextLinePattern
: 正则表达式。 如果当前行匹配此正则表达式,则下一行将不会缩进。
<key>disableIndentNextLinePattern</key>
<string>insert regex here</string>
unIndentedLinePattern
: 正则表达式。 自动缩进器在计算下一行的缩进级别时,将忽略匹配此正则表达式的行。
<key>unIndentedLinePattern</key>
<string>insert regex here</string>
自动完成选项
自动完成选项控制自动完成机制的各个方面。
cancelCompletion
: 正则表达式。 如果当前行匹配此正则表达式,则会抑制自动完成弹出窗口。
<key>cancelCompletion</key>
<string>insert regex here</string>
符号定义
符号定义的文档已移至单独页面:符号定义设置.
Shell 变量
Shell 变量用于不同的目的,可以从代码片段中访问。
请注意,Shell 变量在数组中定义为字典,因此其格式与settings
子元素不同。
shellVariables
: "Shell 变量" 的容器。
<key>shellVariables</key>
<array>
...
</array>
shellVariables
子元素
shellVariables
的子元素是带有name
和value
键的字典。
<dict>
<key>name</key>
<string>BOOK_OPENING</string>
<key>value</key>
<string>Once upon a time...</string>
</dict>
另请参阅
注释 : 定义注释标记的 Shell 变量。
相关 API 函数
要从插件代码中提取元数据信息,可以使用view.meta_info(key, point)
API 调用。