【发布时间】:2016-04-08 16:26:24
【问题描述】:
我正在努力改进现有的 Stata 语法以在 Atom 上使用,language-stata 包。 Stata 代码遵循一种模式:一行中的第一个单词是命令,逗号将选项与命令的对象分开。例如,要在没有常数的情况下对 x 进行 y 的线性回归,请运行:
regress y x, noconstant
三斜杠表示命令在下一行继续。因此前面的代码等价于:
regress x /// COMMENTS
y, /// MORE COMMENTS
noconstant
我认为语法应该突出显示一行的每个第一个单词,除非前一行包含三个斜杠。在上面的两个示例中,它应该突出显示命令regress,但它不应该突出显示第二个示例中的单词y 或noconstant。我想像:
- 从行首开始捕获;
- 突出显示第一个单词;
- 只要行包含三个斜线,就继续捕获;
- 当我发现没有三斜杠的行尾时停止。
我已经尝试了一些方法。例如:
{
name: 'comment.line.stata'
match: '///.*'
}
{
begin: '^\\s*(\\w+)'
end: '(?<!///)$'
beginCaptures:
"1":
name: 'support.function.stata'
}
此代码突出显示每行的第一个单词,无论它之前是否有三个斜杠。另一方面,
{
name: 'comment.line.stata'
match: '///.*'
}
{
begin: '^\\s*(\\w+)'
while: '///'
beginCaptures:
"1":
name: 'support.function.stata'
}
突出显示文档的第一个单词而不是其他任何内容。
有没有人想办法解决这个问题?谢谢!
【问题讨论】:
-
我试图更具体!听起来怎么样?
-
但是如果我使用
regress y x, noconstant,它不会识别任何模式。 -
我试图澄清和简单的问题。我删除了关于逗号的部分。是不是更清楚了?
-
你想在第一个例子中强调什么:
regress y x, noconstant?请尝试this pattern,但它不是那么聪明:( -
您的代码启发了我寻找解决方案!我把它贴在下面。我只需要概括一下您的代码。
标签: regex stata atom-editor