第一个单词突出显示为第一个单词(Atom的语法包)

时间:2016-04-08 16:26:25

标签: regex stata atom-editor

我正致力于改进Stata的现有语法,以便在language-stata包的Atom上使用。 Stata代码遵循一种模式:一行中的第一个单词是一个命令,逗号将选项与命令的对象分开。例如,要在没有常量的情况下对x运行y的线性回归,请运行:

regress y x, noconstant

三次斜杠表示命令在以下行继续。因此,前面的代码相当于:

regress x /// COMMENTS
y, /// MORE COMMENTS
noconstant

我认为语法应突出一行的每个第一个单词除非前一行包含三个斜杠。在上面的两个示例中,它应突出显示命令regress,但不应突出显示第二个示例中的单词ynoconstant。我想象的是:

  1. 在一行的开头开始捕捉;
  2. 突出显示第一个字;
  3. 只要行包含三个斜杠,就继续捕获;
  4. 当我发现没有三次斜线的行结束时停止。
  5. 我尝试了一些事情。例如:

    {
        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'
    }
    

    突出显示文档的第一个单词,而不是其他内容。

    有没有人有想法解决这个问题?谢谢!

0 个答案:

没有答案