【问题标题】:Sublime Text Comments Syntax Regex tmLanguage / tmTheme TODO:Sublime Text Comments Syntax Regex tmLanguage / tmTheme TODO:
【发布时间】:2015-09-26 17:52:42
【问题描述】:

我希望文本 TODO: 作为任何语言的 cmets 中的不同颜色。我将关键字 TODO: 与包 TODOreview 和 SublimeLinter-annotations 一起使用,并且将 TODO: 这个词与其他 cmets 区分开来会很好。

我已经为 C++.tmLanguage 尝试了以下正则表达式,但没有成功。并在 tmTheme 中使用 comment.todo 限定正则表达式

/\/\/.*?(TODO:)/
(TODO:)
(?:\#|\/\/)[^\n\r]TODO:(?<![\?>])
/TODO:(?<![\?>])/

完整示例:

C++.tmLanguage
<dict>
    <key>match</key>
    <string>(\/\/.)*?(TODO:)</string>
    <key>name</key>
    <string>comment.todo</string>
</dict>

theme.tmTheme
<dict>
    <key>name</key>
    <string>Comment Todo</string>
    <key>scope</key>
    <string>comment.todo</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#9B859D</string>
    </dict>
</dict>

【问题讨论】:

    标签: regex syntax themes sublimetext3 todo


    【解决方案1】:

    这不是 SublimeText 和 Textmate 中语法定义的工作方式。您不能以所有不同的语法为特定字符串(例如“TODO”)赋予范围。 但别担心,总会有办法的。

    1. 一个解决方案是去编辑所有你喜欢的语法。 (不建议) 制作一个小的独立语法文件,只找到单词TODO 并给它一个范围。现在,打开所有其他语法文件,找到它们的注释规则定义,并包含这个外部语法定义。看看 HTML 语法是如何包括 Javascript 或 CSS 语法的,这会给你一个想法。

    2. 使用 Sublime 的插件 api 为 TODO 词动态添加范围,你应该小心选择 cmets 内的 TODO 词组。查看plugin API reference 以获取add_regions(key, [regions], &lt;scope&gt;, &lt;icon&gt;, &lt;flags&gt;)

    3. 已经有几个关于包控制的插件可以做这样的事情。即SublimeLinter(可能需要一些配置)和TodoReview

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      • 2013-11-16
      • 2012-09-27
      • 1970-01-01
      • 2016-02-16
      相关资源
      最近更新 更多