在自定义 SublimeLinter 插件中突出显示
Highlighting in custom SublimeLinter plugin
我开始为 SublimeLinter 编写一个插件,目前 linting 本身正在运行。但是,我还没有设法突出显示工作。由于我的 linter(实际上是一个编译器)不输出列,如果突出显示失败的行,我会很高兴。
linter.py
中的相关部分是这样写的:
regex = (
r'Error in script \".+?\" on line (?P<line>\d+) -- aborting creation process'
)
multiline = True
line_col_base = (1, 1)
linter 可执行文件的示例错误如下所示:
Invalid command: Naem
Error in script "/Users/testuser/Desktop/lint-test.nsi" on line 5 -- aborting creation process
我不知道 SublimeLinter 如何利用错误消息,所以我很高兴现在能正确处理行部分。
编辑:根据下面的评论,我尝试使用near
,但由于缺乏文档和示例,我仍然没有成功找到解决办法。我更新的正则表达式模式:
regex = (
r'Invalid command\: (?P<near>\w+)'
r'Error in script \"(.+?)\" on line (?P<line>\d+) -- aborting creation process'
)
尽管这只会捕获拼写错误的命令,但答案可以让我更容易理解如何正确捕获输出。
这是我最终使用的:
syntax = 'nsis'
regex = (
r'(?P<message>[^\r?\n]+)\r?\n'
r'(?P<error>Error) in script "[^"]+" on line (?P<line>\d+) -- aborting creation process'
)
multiline = True
error_stream = util.STREAM_STDOUT
line_col_base = (1, 1)
如果我没记错的话,是缺少换行符。
我开始为 SublimeLinter 编写一个插件,目前 linting 本身正在运行。但是,我还没有设法突出显示工作。由于我的 linter(实际上是一个编译器)不输出列,如果突出显示失败的行,我会很高兴。
linter.py
中的相关部分是这样写的:
regex = (
r'Error in script \".+?\" on line (?P<line>\d+) -- aborting creation process'
)
multiline = True
line_col_base = (1, 1)
linter 可执行文件的示例错误如下所示:
Invalid command: Naem
Error in script "/Users/testuser/Desktop/lint-test.nsi" on line 5 -- aborting creation process
我不知道 SublimeLinter 如何利用错误消息,所以我很高兴现在能正确处理行部分。
编辑:根据下面的评论,我尝试使用near
,但由于缺乏文档和示例,我仍然没有成功找到解决办法。我更新的正则表达式模式:
regex = (
r'Invalid command\: (?P<near>\w+)'
r'Error in script \"(.+?)\" on line (?P<line>\d+) -- aborting creation process'
)
尽管这只会捕获拼写错误的命令,但答案可以让我更容易理解如何正确捕获输出。
这是我最终使用的:
syntax = 'nsis'
regex = (
r'(?P<message>[^\r?\n]+)\r?\n'
r'(?P<error>Error) in script "[^"]+" on line (?P<line>\d+) -- aborting creation process'
)
multiline = True
error_stream = util.STREAM_STDOUT
line_col_base = (1, 1)
如果我没记错的话,是缺少换行符。