首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在编写自己的.tmLanguage文件时,是否可以使用已存在的.tmLanguage文件?

在编写自己的.tmLanguage文件时,是否可以使用已存在的.tmLanguage文件?
EN

Stack Overflow用户
提问于 2016-01-05 05:39:06
回答 1查看 937关注 0票数 0

我正在编写一个.tmLanguage文件来突出标记文件(.md),并且在标记文件中有一些cpp代码。我希望使用c++.tmLanguage (在Packages\C++中)来解决语法问题。我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2016-01-05 19:40:04

学习如何编写语言定义的最佳方法是查看现有的定义。在Package中有现有的Markdown语法定义的富足,所以我建议您通过它们来查看事物是如何构造的。

假设您使用的是PackageDev.YAML-tmLanguage格式,那么围栏代码的存储库将如下所示:

代码语言:javascript
复制
repository:
  fenced-c:
    name: markup.raw.block.markdown markup.raw.block.fenced.markdown
    begin: (\s*```)\s*(c)\s*$
    end: (\1)\n
    captures:
      '1': {name: punctuation.definition.fenced.markdown}
      '2': {name: variable.language.fenced.markdown}
    patterns:
    - include: source.c

  fenced-c++:
    name: markup.raw.block.markdown markup.raw.block.fenced.markdown
    begin: (\s*```)\s*(c\+\+)\s*$
    end: (\1)\n
    captures:
      '1': {name: punctuation.definition.fenced.markdown}
      '2': {name: variable.language.fenced.markdown}
    patterns:
    - include: source.c++

  fenced-coffee:
    name: markup.raw.block.markdown markup.raw.block.fenced.markdown
    begin: (\s*```)\s*(coffee)\s*$
    end: (\1)\n
    captures:
      '1': {name: punctuation.definition.fenced.markdown}
      '2': {name: variable.language.fenced.markdown}
    patterns:
    - include: source.coffee

  # etc.

使用内置转换工具转换为XML,如下所示:

代码语言:javascript
复制
<key>repository</key>
<dict>
    <key>fenced-c</key>
    <dict>
        <key>begin</key>
        <string>(\s*```)\s*(c)\s*$</string>
        <key>captures</key>
        <dict>
            <key>1</key>
            <dict>
                <key>name</key>
                <string>punctuation.definition.fenced.markdown</string>
            </dict>
            <key>2</key>
            <dict>
                <key>name</key>
                <string>variable.language.fenced.markdown</string>
            </dict>
        </dict>
        <key>end</key>
        <string>(\1)\n</string>
        <key>name</key>
        <string>markup.raw.block.markdown markup.raw.block.fenced.markdown</string>
        <key>patterns</key>
        <array>
            <dict>
                <key>include</key>
                <string>source.c</string>
            </dict>
        </array>
    </dict>
    <key>fenced-c++</key>
    <dict>
        <key>begin</key>
        <string>(\s*```)\s*(c\+\+)\s*$</string>
        <key>captures</key>
        <dict>
            <key>1</key>
            <dict>
                <key>name</key>
                <string>punctuation.definition.fenced.markdown</string>
            </dict>
            <key>2</key>
            <dict>
                <key>name</key>
                <string>variable.language.fenced.markdown</string>
            </dict>
        </dict>
        <key>end</key>
        <string>(\1)\n</string>
        <key>name</key>
        <string>markup.raw.block.markdown markup.raw.block.fenced.markdown</string>
        <key>patterns</key>
        <array>
            <dict>
                <key>include</key>
                <string>source.c++</string>
            </dict>
        </array>
    </dict>
    <key>fenced-coffee</key>
    <dict>
        <key>begin</key>
        <string>(\s*```)\s*(coffee)\s*$</string>
        <key>captures</key>
        <dict>
            <key>1</key>
            <dict>
                <key>name</key>
                <string>punctuation.definition.fenced.markdown</string>
            </dict>
            <key>2</key>
            <dict>
                <key>name</key>
                <string>variable.language.fenced.markdown</string>
            </dict>
        </dict>
        <key>end</key>
        <string>(\1)\n</string>
        <key>name</key>
        <string>markup.raw.block.markdown markup.raw.block.fenced.markdown</string>
        <key>patterns</key>
        <array>
            <dict>
                <key>include</key>
                <string>source.coffee</string>
            </dict>
        </array>
    </dict>
<!-- and so on... -->

我建议您使用PackageDev,因为使用YAML比使用XML容易得多。或者,您可以使用新的基于YAML的.sublime-syntax格式,但是它目前只支持在崇高文本3 发展建设 3084及更高版本中,这意味着您需要注册用户才能访问它。我建议现在继续使用.YAML-tmLanguage,直到新的公共建筑发布并支持新的格式。

您可以在PackageDev Github回购中查找更多的.YAML-tmLanguage文件示例。此外,我是Python Improved项目的主要开发人员,您也可以找到我的所有源文件论吉乌布

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34604887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档