2011-05-03 64 views
1

我在我的系統上安裝了npm的jslintjslint vim errorformat

它產生的錯誤消息的格式如下:

1 1,9: Missing name in function statement. 
    function() { 
    2 2,11: Use '===' to compare with '0'. 
    if (x == 0) { 
    3 4,2: Unnecessary semicolon. 
    }; 

我寫了一個編譯器插件爲Vim來解析錯誤消息,但我無法與errorformat找出問題。我已經在我的編譯文件現在如下:

CompilerSet makeprg=jslint 
     \\ $* 
     \\ % 
CompilerSet errorformat= 
    \%*[\ ]%n\ %l\,%c:\ %m, 
    \%-G%.%# 

哪些AFAIK應該做到以下幾點:

  • %*[\ ] - 跳過空格在行
  • %n的開始 - 匹配錯誤號
  • \ - 跳過空格
  • %l - 匹配行號
  • \, - 跳過逗號
  • %c - 匹配的列數
  • : - 跳過結腸
  • \ - 跳過空間再次
  • %m - 匹配該錯誤信息
  • , - 新生產線
  • %-G%.%# - 跳過所有其他生產

它運行jslint它顯示消息,但:clist命令不顯示任何錯誤。

我錯過了什麼?

+0

我知道在stackoverflow上有vim錯誤消息模式,但我想在這裏找到問題,而不是使用不同的jslint。 – 2011-05-03 13:58:28

+0

該評論沒有意義。在vim中使用錯誤格式不會讓你使用另一個jslint。這裏的問題**是errorformat(與jslint的輸出不匹配) – sehe 2011-05-03 14:06:07

+0

互聯網上有不同的vim errorformat字符串,但不適用於_this_ jslint輸出。我明白,問題是與錯誤格式,我的問題是什麼。 – 2011-05-03 14:08:21

回答

1

的問題是與\,,跳過逗號,正確的格式是:

CompilerSet errorformat= 
    \%*[\ ]%n\ %l%.%c:\ %m, 
    \%-G%.%# 
+0

我真的不明白爲什麼**,但它適用於此。 – 2011-05-04 09:22:00

0

逗號必須\\,因爲,進行轉義是錯誤格式運用於特殊的字符,並且\是在一個特殊的字符vim配置文件,它本身必須被轉義。 對於vim,你的錯誤格式是%*[ ]%n %l\,%c: %m,%-G%.%#,因爲\在行的開頭或空格之前是vim的轉義,而不是錯誤格式。