将标记之间的所有内容匹配为注

时间:2015-04-10 00:56:15

标签: syntax-highlighting sublimetext3

我想强调

之间的所有事情
!&
    some explanation
&!  

作为评论。

我知道评论与

相符
- name: comment.line.exclamation-mark.fortran
  match: (?i)\!.*$

fortran.YAML-tmLanguage中 但我不知道如何将其扩展到上述情况。

2 个答案:

答案 0 :(得分:1)

由于注释是多行的,因此需要将正则表达式分成两个表达式,一个名为begin,另一个名为end。 这允许您解析多行。

我真的不使用YAML,但是来自C tmLanguage的代码应该让你开始(评论风格是/* COMMENT */):

<dict>
    <key>begin</key> <string>\s*/\*</string>
    <key>captures</key>
    <dict>
        <key>0</key> <dict> <key>name</key> 
        <string>punctuation.definition.comment.c</string> </dict>
    </dict>
    <key>end</key> <string>\*/</string>
    <key>name</key> <string>comment.block.c</string>
</dict>

因此,您可以将\s\!\&用于开始标记,将\&\!用于结束标记。

答案 1 :(得分:0)

我找到了以下工作。谢谢@LinuCC。

# order matter: this block comment syntax should be before the line comment syntax
- name: comment.block.fortran
  begin: (?i)\!&
  end: (?i)&\!
  captures:
    '0': {name: comment.line.exclamation-mark.fortran}

- name: comment.line.exclamation-mark.fortran
  match: (?i)\!.*$

要进行评论切换工作,您还需要在另一个文件中

# [PackageDev] target_format: plist, ext: tmPreferences
---
name: Comments
uuid: 40e092f2-ee49-4cbd-8afb-4a5c4f581463
scope: source.fortran

settings:

  shellVariables:
  - name: TM_COMMENT_START
    value: '! '
  - name: TM_COMMENT_START_2
    value: '!&'
  - name: TM_COMMENT_END_2
    value: '&!'