Для чего нужен тип ошибки в errorformat для списка быстрых исправлений Vim? - PullRequest
8 голосов
/ 10 декабря 2010

Я не уверен насчет спецификатора формата %t в списке быстрых исправлений Vim. Как это влияет на поведение / отображение буфера быстрого исправления?

Я попытался выяснить это с помощью следующего тестового файла:

$ cat test.out
foo              Error         1 foo.h            foobar
bar              Error         2 foo.h            foobar
foobar           Warning       3 foo.h            foobar
barfoo           Warning       4 foo.h            foobar

И следующие errorformat сначала:

set errorformat+=%.%#%*\\s%.%#%*\\s%l\ %f%*\\s%m

С этим errorformat я могу использовать :cgetfile test.out и переходить к номерам строк в foo.h, но со следующим errorformat:

set errorformat+=%.%#%*\\s%t%.%#%*\\s%l\ %f%*\\s%m

Все, что изменилось, это то, что теперь я вижу некоторые пробелы после номеров строк в буфере быстрого исправления, например Я вижу (два пробела после 1)

foo.h|1  | foobar

вместо

foo.h|1| foobar

Итак, у меня два вопроса:

  1. Что не так с моим errorformat?
  2. Что я должен увидеть, если тип ошибки может быть извлечен?

Ответы [ 3 ]

8 голосов
/ 27 января 2011

Я не уверен насчет спецификатора формата% t в списке быстрых исправлений Vim, как он влияет на поведение / отображение буфера быстрых исправлений?

Он сообщает буферу быстрых исправлений, какой типошибки совпадения (ошибка, предупреждение или информация).Затем буфер быстрого исправления покажет эту информацию после номера строки и выделит ее другим цветом.Например, вот предупреждение и ошибка:

hosts.cfg|3473 error| Could not add object property
hosts.cfg|3790 warning| Duplicate definition found for host 'mailgateway'

В окне быстрого исправления слово «предупреждение» выделено желтым, а слово «ошибка» - белым на красном.В моем errorformat я использую% t, где E или W будет в Ошибка или Предупреждение.Например:

%trror: %m in file '%f' on line %l
5 голосов
/ 10 декабря 2010

Это на самом деле не ответ на ваш вопрос, а альтернативное решение, которое я использую сам.Лично я нахожу систему форматирования ошибок слишком сложной, и вместо этого использую общий очень простой формат ошибок, передаваемый выводом реальной функции, через который я передаю вывод моей команды make.Я использую это: "% f \% l \% c \% m".Я пишу эти функции анализа ошибок на python, но любой из поддерживаемых языков сценариев должен это делать, или даже vimL.Логика заключается в том, что такую ​​функцию гораздо легче отлаживать, использовать за пределами vim и (по крайней мере, для меня) писать быстрее, чем создавать строку с ошибкой.

1 голос
/ 10 декабря 2010

Я нашел следующий пример в файле quickfix.txt, где используется % t .

Examples<br> The format of the file from the Amiga Aztec compiler is:<br> filename>linenumber:columnnumber:errortype:errornumber:errormessage

filename    name of the file in which the error was detected  
linenumber  line number where the error was detected  
columnnumber    column number where the error was detected  
errortype   type of the error, normally a single 'E' or 'W'  
errornumber number of the error (for lookup in the manual)  
errormessage    description of the error    

This can be matched with this errorformat entry:<br> %f>%l:%c:%t:%n:%m

Кажется, что некоторый компилятор хранит тип ошибки в одном символе E или W, предположительно для Error и Warning.

Имейте в виду, что это один символ, поэтому он не будет совпадать"или" Ошибка ".
%t error type (finds a single character)

...