Vim пытается перейти к несуществующему файлу после: make - PullRequest
4 голосов
/ 24 февраля 2012

Я использую :make из vim и заканчиваю тем, что прыгаю в файл с проблемами.

В последнее время, по крайней мере, я заметил, что gcc 4.6.1, vim переходит на неверный файл / строкупотому что он идет к первой сообщенной строке, которая имеет "In file included from ABC.h|5| 0,", и нет файла с именем "In file included from ABC.h".

. Существует решение для извлечения только имени файла из вышеуказанной строки, ABC.h в этом случае, но это не решает проблему, так как проблемный файл только там включен.

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

MyDir/FGH.h|56 col 32| error: 'bad bad thing happened here'

Есть ли известное исправление для этого в vim?

Ответы [ 3 ]

4 голосов
/ 20 сентября 2012

Эта ошибка исправлена ​​в новых версиях Vim: Журналы отчетов об ошибках - # 62169 .

Вы можете использовать следующие настройки для решения проблемы без обновления Vim:

  set errorformat^=%-GIn\ file\ included\ from\ %f:%l:%c:,%-GIn\ file
           \\ included\ from\ %f:%l:%c\\,,%-GIn\ file\ included\ from\ %f
           \:%l:%c,%-GIn\ file\ included\ from\ %f:%l

(настройка, извлеченная из последнего исходного кода Vim, из файла src / option.h )

3 голосов
/ 24 февраля 2012

:make! не переходит к первому результату.

1 голос
/ 24 февраля 2012

Проблема заключается в небольших различиях в формате ошибок, необходимых для последних версий gcc.

Я полагаю, что об этом упоминалось в C ++ Lounge (чате) на днях, и был опубликован формат ошибок, который предположительно работает лучше. Я не проверял, что он делает :

  • http://chat.stackoverflow.com/search?q=errorformat&room=10

    errorformat=%*[^"]"%f"%*\D%l: %m,"%f"%*\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GInfile included from %f:%l:%c:,%-GIn file included from %f:%l:%c\,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\,,%-G%*[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,"%f"\, line %l%*\D%c%*[^ ] %m,%D%*\a[%*\d]: Entering directory `%f',%X%*\a[%*\d]: Leaving directory `%f',%D%*\a: Entering directory `%f',%X%*\a: Leaving directory `%f',%DMaking %*\a in %f,%f|%l| %m
    
...