如何为 VS 代码创建简单的自定义语言着色
How to create a simple custom language colorization to VS Code
我正在尝试为日志文件创建一个简单的着色,现在可以在代码中包含自定义语言(我使用的是 0.9.2)。我创建了一个简单的 .tmLanguage 文件来为字母 'q' 着色,只是为了启动,但没有成功。
我的新语言 log
与文件扩展名正确关联,我也可以从代码内部手动 select 它,但没有着色。我有一种感觉,它与 "scope" 我将我的模式相关联,但我不确定。是否有可供选择的有效范围列表?最初我以为我会使用一些通用的东西,比如 "comment" 来获得一些颜色,但它似乎不起作用。
这是我的 .tmLanguage 文件:
<?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>
<key>scopeName</key>
<string>text.log</string>
<key>fileTypes</key>
<array>
<string>log</string>
</array>
<key>name</key>
<string>Log file</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>q</string>
<key>name</key>
<string>comment</string>
</dict>
</array>
</dict>
</plist>
我可能在这里误解了什么,所以非常感谢您的帮助:-)
您需要使用正则表达式而不是静态字符串来描述模式:
<key>match</key>
<string>q</string> <- This needs to be a regular expression
<key>name</key>
<string>comment</string>
我提供了一个更有用的日志文件荧光笔示例。它用不同的颜色为数字、提示、警告和错误着色。识别这些关键字和数字的规则是基于正则表达式的。
<?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>
<key>scopeName</key>
<string>text.log</string>
<key>fileTypes</key>
<array>
<string>log</string>
</array>
<key>name</key>
<string>Log file</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(?i:(hint|info|information))\b</string>
<key>name</key>
<string>info-token</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(warning|warn))\b</string>
<key>name</key>
<string>warn-token</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(Error|Failure|Fail))\b</string>
<key>name</key>
<string>error-token</string>
</dict>
<dict>
<key>match</key>
<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b</string>
<key>name</key>
<string>constant.numeric</string>
</dict>
</array>
<key>uuid</key>
<string>FF0550E0-3A29-11E3-AA6E-0800200C9A77</string>
</dict>
</plist>
荧光笔给出了这样的结果(使用默认主题):
我没有找到关于可用令牌(如 error-token
、constant.numeric
等)的官方文档。但是 %VSCODE_INSTALLATION%\resources\app\out\vs\languages\markdown\common\tokens.css
中有一个文件。它似乎列出了所有可用的令牌等。创建 .tmLanguage
文件时将其用作参考。
但请注意:有些主题仅使用 basic 标记。还有一些其他主题对许多不同的标记使用相同的颜色。所以你应该经常针对最常见的主题测试荧光笔,看看结果是否好看。
您绝对应该访问此关于 Language Grammars 的页面以了解更多信息。
正如@Woshi所说,你需要正则表达式。
至于通常适用于大多数颜色主题的示波器,我会 link 你this answer。
请记住,要获取范围,它需要在键为 "name".
的字典中
我们刚刚发布了一个语言扩展,它为输出面板带来了色彩。基本上,它与该线程上的已批准答案做同样的事情,并添加了 text/x-code-output
mime 类型,供输出面板使用。
在此处免费获取:
https://marketplace.visualstudio.com/items?itemName=IBM.output-colorizer
来源:
https://github.com/IBM-Bluemix/vscode-log-output-colorizer
请帮忙投稿!错误、功能请求、贡献都欢迎。
下面是它工作的一些截图:
我正在尝试为日志文件创建一个简单的着色,现在可以在代码中包含自定义语言(我使用的是 0.9.2)。我创建了一个简单的 .tmLanguage 文件来为字母 'q' 着色,只是为了启动,但没有成功。
我的新语言 log
与文件扩展名正确关联,我也可以从代码内部手动 select 它,但没有着色。我有一种感觉,它与 "scope" 我将我的模式相关联,但我不确定。是否有可供选择的有效范围列表?最初我以为我会使用一些通用的东西,比如 "comment" 来获得一些颜色,但它似乎不起作用。
这是我的 .tmLanguage 文件:
<?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>
<key>scopeName</key>
<string>text.log</string>
<key>fileTypes</key>
<array>
<string>log</string>
</array>
<key>name</key>
<string>Log file</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>q</string>
<key>name</key>
<string>comment</string>
</dict>
</array>
</dict>
</plist>
我可能在这里误解了什么,所以非常感谢您的帮助:-)
您需要使用正则表达式而不是静态字符串来描述模式:
<key>match</key>
<string>q</string> <- This needs to be a regular expression
<key>name</key>
<string>comment</string>
我提供了一个更有用的日志文件荧光笔示例。它用不同的颜色为数字、提示、警告和错误着色。识别这些关键字和数字的规则是基于正则表达式的。
<?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>
<key>scopeName</key>
<string>text.log</string>
<key>fileTypes</key>
<array>
<string>log</string>
</array>
<key>name</key>
<string>Log file</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(?i:(hint|info|information))\b</string>
<key>name</key>
<string>info-token</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(warning|warn))\b</string>
<key>name</key>
<string>warn-token</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(Error|Failure|Fail))\b</string>
<key>name</key>
<string>error-token</string>
</dict>
<dict>
<key>match</key>
<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b</string>
<key>name</key>
<string>constant.numeric</string>
</dict>
</array>
<key>uuid</key>
<string>FF0550E0-3A29-11E3-AA6E-0800200C9A77</string>
</dict>
</plist>
荧光笔给出了这样的结果(使用默认主题):
我没有找到关于可用令牌(如 error-token
、constant.numeric
等)的官方文档。但是 %VSCODE_INSTALLATION%\resources\app\out\vs\languages\markdown\common\tokens.css
中有一个文件。它似乎列出了所有可用的令牌等。创建 .tmLanguage
文件时将其用作参考。
但请注意:有些主题仅使用 basic 标记。还有一些其他主题对许多不同的标记使用相同的颜色。所以你应该经常针对最常见的主题测试荧光笔,看看结果是否好看。
您绝对应该访问此关于 Language Grammars 的页面以了解更多信息。
正如@Woshi所说,你需要正则表达式。
至于通常适用于大多数颜色主题的示波器,我会 link 你this answer。 请记住,要获取范围,它需要在键为 "name".
的字典中我们刚刚发布了一个语言扩展,它为输出面板带来了色彩。基本上,它与该线程上的已批准答案做同样的事情,并添加了 text/x-code-output
mime 类型,供输出面板使用。
在此处免费获取: https://marketplace.visualstudio.com/items?itemName=IBM.output-colorizer
来源: https://github.com/IBM-Bluemix/vscode-log-output-colorizer 请帮忙投稿!错误、功能请求、贡献都欢迎。
下面是它工作的一些截图: