SyntaxHighlightTools
更容易的语法高亮和主题定义。
详细信息
安装量
- 总计 19K
- Win 11K
- Mac 5K
- Linux 3K
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Mac | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
读我
- 源代码
- bitbucket.org
SyntaxHighlightTools
读取和写入XML很丑。JSON对人类来说更漂亮,但仍然有很多噪音,这会模糊意义。
因此有SyntaxHighlightTools,它提供了一种简单的语言来定义语法规则,还有一种简单的工具来定义颜色主题。
tmLang
用于定义语法高亮规则的编程语言。
创建新的tmLang文件
- 创建空的tmLang文件
- 运行命令面板并选择“SyntaxHighlightTools: 新建tmLang文件...”
- 从tmLanguage文件创建tmLang文件
- 打开tmLanguage文件
- 运行命令面板并选择“SyntaxHighlightTools: 新建tmLang文件...”
tmLang语言
最好看看:file:`tmLang.tmLang`的示例。你可以从:file:`tmLangTool.py`获取语法。
以下是tmLang语言的快速概述
tmLang文件有一个头部部分,其中你可以定义语言的通用设置和可以在之后的正则表达式中使用的令牌
name : Name of language scopeName : source.my-lang uuid : <uuid generated from :code:`import uuid ; uuid.uuid4()`> fileTypes : <first-suffix suffix2 suffix3>
注意
文件类型中的 "<" 和 ">" 是语法的一部分,语法倾向于perl6语法的词表生成器。
继续使用一些令牌的示例
foo = some regex bar = another regex using {foo}
如你所见,你可以在定义令牌后直接使用它。
最后,从MAIN部分(主要模式列表)开始你的规则库
MAIN constant.numeric.integer.my-lang \d+ # # includes are done with #name, where name can be # 1) a name of a collection in your rule repository # 2) a scope name like #source.python # 3) #$self for self reference # example.for.pattern.with.begin.and.end.pattern \{ \} #included # if you list your patterns between your begin and end pattern # applyPatternLast is implied example.for.applyPatternLast \[ #source.regex another.pattern.spec.here (fo(o))bar 2: foo.bar # names the captured "o" \] example.for.nesting (?x) \( \) #$self # use "[]" for specifying an empty pattern list example.for.applyPatternLast.with.empty.patterns < [] > example.for.long.regex (?x) this regex is very long included ...
在Sublime Text 非官方文档 - 语法定义中,你可以找到一个使用PList格式的JSON翻译的示例。以下是tmLang版本的示例
name : Sublime Snippet (Raw) scopeName : source.ssraw fileTypes : <ssraw> uuid : ca03e751-04ef-4330-9a6b-9b99aae1c418 MAIN keyword.ssraw # Tab stops like $1, $2... \$(\d+) 1: constant.numeric.ssraw keyword.ssraw # Variables like $PARAM1, $TM_SELECTION \$([A-Za-z][A-Za-z0-9_]+) 1: constant.numeric.ssraw variable.complex.ssraw (\$)(\{)([0-9]+): 1: keyword.ssraw 3: constant.numeric.ssraw \} #$self string.ssraw . constant.character.escape.ssraw \\(\$|\>|\<) invalid.ssraw (\$|\>|\<)
如果你想要给语法添加特殊行为,你必须要添加 (*.tmPreferences) 和 <language name>.sublime-settings 文件。
语法特定的Sublime设置
你可以通过简单的添加任何设置
Settings:: translate_tabs_to_spaces: true draw_white_space: all
请注意,尝试将值解释为JSON文本。如果不可行,则取走剥离后的字符串值。因此,上述代码会导致以下结果
{ "translate_tabs_to_spaces": true, "draw_white_space": "all" }
tmPreferences
注意!
使用以下内容将覆盖任何 已存在的带有相同名称的tmPreferences文件,以及如果使用设置定义则还会覆盖 <languagefile>.sublime-settings。
注意
没有任何删除未在tmlang文件中命名的现有文件。
每个tmPreferences定义必须包含作用域(scope)和uuid。
以下表格是从tmPreferences中提取的值。对于某些首选项,我无法确定它是通过Sublime Text评估的。
名称 | 类型 |
---|---|
减少缩进模式 | 正则表达式 |
增加缩进模式 | 正则表达式 |
禁用下一行缩进模式 | 正则表达式 |
无缩进行模式 | 正则表达式 |
括号缩进下一行模式 | 正则表达式 |
取消完成 | 正则表达式 |
符号转换 | 替换程序 |
缩进方括号 | 正则表达式 |
缩进括号 | 布尔值 |
保留缩进 | 布尔值 |
显示在符号列表中 | 整数 |
禁用默认完成 | 整数 |
TM_* | 字符串 |
完成 | 字符串列表 |
突出显示配对 | 字符串列表 |
智能打字配对 | 字符串列表 |
关于这些值的一些信息,您可以在以下资源中找到
- http://manual.macromates.com/en/appendix.html
- http://manual.macromates.com/en/preferences_items.html
以及当然,通过分析*.tmPreferences文件。
现在以下是一些示例。它们来自真实的tmPreferences文件。从tmLang.tmlang文件开始,已经有了一些证明过的例子。首先定义一个注释字符,例如Ctrl+/使用的
Comment:: uuid : e07f5996-cef4-4a7c-9d2c-64e85be714ef scope : source.tmlang TM_COMMENT_START: #
对于使用符号列表(Ctrl+r)进行导航,选择了两个作用域,进行了一些轻微的转换
Navigation - Pattern Sets:: uuid: 62dfa0a4-51a9-4bc2-8cfc-adfea85d74e4 scope: source.tmlang storage.type.class showInSymbolList: 1 symbolTransformation: s/^/Pattern Set: / Navigation - Scopes:: uuid: 192ba968-fc92-433c-9a6a-7c4d521e486d scope: source.tmlang entity.name.function showInSymbolList: 1 symbolTransformation: s/^/Scope: /
上面的三个例子创建了Comment.tmPreferences、Navigation - PatternSets.tmPreferences和Navigation - Scopes.tmPreferences文件。
也许最后一个(尚未证实)例子来自XML/Miscellaneous.tmPreferences
Miscelleneous:: uuid: 95788610-7E2E-45CE-9CCE-708FE0C90BF7 scope: text.xml comment: /* Don't indentation * <?, </, <! * <whatever></whatever> * <whatever /> * <% %> * <!-- --> * <%-- --%> * * Do indent: * <whatever> * <% * <!-- * <%-- * * Decrease indent for: * </whatever> * --> * --%> */ decreaseIndentPattern: ^\s*(</[^>]+>|-->|--%>) highlightPairs: ( ) [ ] { } "\"" "\"" < > increaseIndentPattern: ^\s*<(([^!/?]|%)(?!.+?([/%]>|</.+?>))|[%!]--\s*$)
请注意highlightPairs。它是一个字符串列表,可以是不带引号的,也可以是带双引号的。这就是为什么双引号必须转义和引号。highlightPairs和smartTypingPairs都必须是元素数量相等的列表,因为它们是自动配对的。
在创建tmPreferences文件的过程中,并非所有内容都经过适当的测试,因此我非常欢迎反馈。
扩展变量
tmTh
如果您尝试创建一个新的颜色方案,您很快就会发现不知道要为主题哪些作用域名称,因此您必须在其他.thTheme文件中查找,这会非常耗时。
另一件事是,除了在http://manual.macromates.com/en/language_grammars.html之外,没有关于作用域名称的真实规范。
创建新的tmTh文件
- 创建一个新的空白窗口
- 打开您想为它们创建颜色方案(或为覆盖所有语言文件而留空)的tmLanguage文件
- 打开您想使用作为颜色默认值的tmTheme文件
- 从构建系统中选择"generate_tmTh",转到tmLanguage或tmTheme文件之一,然后按F7运行构建系统。
- 一个新的视图出现了,包含.tmth文件。将此文件保存为您的颜色方案名称。
- 将构建系统切换回"自动"。
按F7从tmth文件生成您的tmTheme文件。
陷阱
- 确保您使用一种单一种的缩进样式。空格和制表符之间没有任何区别,这可能导致奇怪的错误。
更改
- 2014-09-13
您现在可以为类似以下规则的规则指定名称和内容名称
meta.restructuredtext.link-explicit <string.other.ref.restructuredtext> # here come the rule
- 2014-01-31
- 增强tmLang2tmLanguage中错误显示
- 在构建系统中添加file_regex,以便您可以跳转到错误的位置
- 2014-01-16
- 添加tmPreferences定义
- 改进了符号列表以便导航
- 添加了完成功能,使它们更加上下文敏感,这样完成列表就不会出现溢出
- 添加了uuid完成功能,它可以始终创建一个新的uuid。
- 默认情况下设置空白为空格
作者
凯乌韦(Kiwi)洛伦茨 <[email protected]> (http://quelltexter.org)
请支持我在Sublime Text 插件上的工作: 通过Paypal捐赠