Regex 如何扩展TextMate语言定义并改变其某些行为?

Regex 如何扩展TextMate语言定义并改变其某些行为?,regex,sublimetext,textmate,Regex,Sublimetext,Textmate,我有一个.tmLanguage文件,它包含并扩展了第三方语言定义。除其他事项外,第三方文件处理由前导定义的单行注释(或#)符号: 捕获 1. 名称 标点符号.definition.comment.nsis 火柴 (|#).$\n? 名称 comment.line.nsis 由于我自己的语言定义将语法扩展到需要以分号结尾的表达式(这一点不适用于原始语言),因此所有尾随分号都将被呈现为注释的一部分 如何在保持原语言文件的注释风格的同时改变这种行为?如果在字符串中间有分号,会发生什么?难道它不认为

我有一个
.tmLanguage
文件,它包含并扩展了第三方语言定义。除其他事项外,第三方文件处理由前导
定义的单行注释(或
#
)符号:


捕获
1.
名称
标点符号.definition.comment.nsis
火柴
(|#).$\n?
名称
comment.line.nsis
由于我自己的语言定义将语法扩展到需要以分号结尾的表达式(这一点不适用于原始语言),因此所有尾随分号都将被呈现为注释的一部分


如何在保持原语言文件的注释风格的同时改变这种行为?

如果在字符串中间有分号,会发生什么?难道它不认为这也是一个评论吗?第三方
.tmLanguage
是否公开提供?似乎最好的解决方案是更改原始设置,以指示前导捕获只应位于行的软开头(即,允许制表符/空白)。您是对的,语言扩展的问题在于它打破了普通语言的惯例。所以,在
命令之间可能不可能有区别;注释和扩展名
命令()的语法。我会联系语言扩展的作者,看看他是否可以改变这一点。另一个选择是,采用旧的语言定义,只是为了您的目的重写它,所以您可以根据自己的喜好更改所有定义,而不是尝试扩展它和处理bug。
<dict>
  <key>captures</key>
  <dict>
    <key>1</key>
    <dict>
      <key>name</key>
      <string>punctuation.definition.comment.nsis</string>
    </dict>
  </dict>
  <key>match</key>
  <string>(;|#).*$\n?</string>
  <key>name</key>
  <string>comment.line.nsis</string>
</dict>