【问题标题】:Extend existing tmLanguage file扩展现有的 tmLanguage 文件
【发布时间】:2017-04-18 08:26:35
【问题描述】:

我正在使用 Sublime Text 3,在这种情况下编辑 LaTeX。为了进一步自定义语法突出显示,我想定义一个新范围,它只是扩展了随附的LaTeX.tmLanguage(我无权访问,甚至无法阅读)。 注意我没有兴趣编写自己的 tmLanguage 文件,甚至没有下载现有的,我只想扩展它,就像在 Python 中重载一个类一样。

特别是我想添加meta.footnote.latex 来为\footnote{...} 自定义语法高亮(我在https://github.com/bradrobertson/sublime-packages/blob/master/LaTeX/LaTeX.tmLanguage 中找到的一个定义)

【问题讨论】:

    标签: sublimetext3 sublimetext tmlanguage


    【解决方案1】:

    您可以使用 include 指令从不同的文件导入现有规则并覆盖或扩展其规则。

    .tmLanguage:

    <dict>
        <key>fileTypes</key>
        <array>
            <string>mylatex</string>
        </array>
        <key>name</key>
        <string>MyLatex</string>
        <key>patterns</key>
        <array>
            <dict>
                <key>include</key>
                <string>text.tex.latex</string>
            </dict>
            <!-- your rules -->
        </array>
        <key>scopeName</key>
        <string>text.tex.latex.mylatex</string>
    </dict>
    

    .sublime 语法:

    %YAML 1.2
    ---
    name: MyLatex
    file_extensions:
      - mylatex
    scope: text.tex.latex.mylatex
    contexts:
      main:
        - include: scope:text.tex.latex
        # your rules
    

    【讨论】:

    • 太棒了!这是一个很好的建议。基于此,进一步搜索和 Sublime 论坛的帮助,我发现我可能应该专注于使用 .sublime-syntax 格式而不是(YAML),它与 .tmLanguage 格式不兼容。我正在尝试与您的答案相同。但到目前为止还没有成功。你也有这种格式的经验吗?在寻求进一步帮助之前,我会尝试更多。 See documentation
    • 太好了,这正是我需要的!
    • 这是否将右下角的语言指示器强制为 MyLatex 或其他?是否始终包含所有此类扩展?
    • @PeterGerdes 首先我可以确认,你会看到 MyLatex。后者我不能保证扩展,但我可以说我从来没有遇到过任何问题,因为我的语言扩展总是自动选择的。
    • 所以,正如我在一个新问题中所问的那样,这意味着您不能拥有两个彼此不了解的软件包,并且两者都同时为给定语言添加范围(因为您必须选择其中一种文件类型,并且它们不会相互扩展)。 stackoverflow.com/questions/48041573/…
    猜你喜欢
    • 2016-08-07
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多