формат ошибки jslint vim

#vim #compiler-construction #jslint #errorformat

#vim #построение компилятора #jslint #формат ошибки

Вопрос:

У меня в системе установлен jslint с npm.

Он выдает сообщения об ошибках в следующем формате:

   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 команда не показывает никаких ошибок.

Чего я не понимаю?

Комментарии:

1. Я знаю, что в stackoverflow есть шаблоны сообщений об ошибках vim, но я хотел бы найти проблему здесь, а не использовать другой jslint.

2. этот комментарий не имеет смысла. Использование формата ошибки в vim не приведет к использованию другого jslint. Проблема здесь заключается в errorformat (который не соответствует выводам jslint)

3. В Интернете есть разные строки vim errorformat, но не для этого вывода jslint. Я понимаю, что проблема связана с errorformat, мой вопрос в чем.

Ответ №1:

Проблема была с , , пропущенной запятой, правильный формат:

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

Ответ №2:

Запятая должна быть экранирована с помощью, \, поскольку , это специальный символ в errorformat и это специальный символ в файле конфигурации vim, который сам по себе должен экранироваться. Для vim ваш формат ошибки тогда %*[ ]%n %l,%c: %m,%-G%.%# , поскольку в начале строки или перед пробелами используются экранирования для vim, а не для формата ошибки.