ошибка в vim - PullRequest
       40

ошибка в vim

0 голосов
/ 02 июня 2018

У меня есть проект make, создающий двоичные файлы с использованием различных бэк-эндов… → C, C ++, csharp, java… в Linux с использованием mono csharp, gcc и т. Д.…

  1. если я выберу один бэкэнд (пример csharp), открыв файл XXX.cs, тогда синтаксический анализатор make-output-error работает нормально ... это означает, что вывод ошибок выполняется правильно, и я могу перейти к ошибке прямопрочь…

  2. , если я выберу команду make верхнего уровня (открыть vim без файла в каталоге верхнего уровня), чем анализатор make-output-error не будет работать правильно.

Я обнаружил, что переменная vim errorformat изменилась между 1. и 2.

и теперь мой вопрос:как я могу сказать vim распознать вывод ошибок из C, C ++, CSharp… и Java во время выполнения make верхнего уровня?

1 Ответ

0 голосов
/ 02 июня 2018

Независимо от того, какой плагин для файлового типа у вас есть для C #, он, вероятно, меняет значение :help 'errorformat' для работы с компиляторами C #, в то время как у вас остается значение по умолчанию при запуске верхнего уровня make, который, я предполагаю, выводит ошибки как есть., без какой-либо фильтрации.

Для того чтобы Vim правильно интерпретировал потенциально смешанный вывод всех ваших компиляторов, вы можете:

  • установить errorformat в значение, которое будет работать со всемиэти форматы,
  • или добавьте в процесс сборки шаг, который объединяет каждый собственный выходной формат в единый формат, который Vim может интерпретировать без усилий.

Первый вариант, найдите errorformat значения, используемые каждым компилятором и добавляющие их к значению по умолчанию при запуске:

set errorformat^=<efm for c#>
set errorformat^=<efm for cpp>
...

Второй вариант, я много лет думал о написании программы, которая будет делать именно это, но никогда не найдет времядаже написать README.md.Боюсь, что если такой вещи не существует, тебе придется sed и awk идти самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...