2016-09-14 2 views
2

У меня есть локальный файл Makefile, который просто вызывает make -C ... В результате я получаю вывод компилятора с именами файлов и пути к каталогу относительно ...vim изменить базу относительного пути к источнику в другой каталог

Теперь vim не может получить правильный путь для быстрого исправления.

Вопрос: Как установить базовый путь для быстрого исправления vim до ..?

Мой путь Структура:

<bla>/base/proj1/<localMakeFile> 
<bla>/base/<globalMakefile> 
<bla>/src/source1.cpp 

компилировать внутри/основание/proj1/

Компилятор выход для ошибки, как: SRC/source1.cpp | 141 Col 54 | Ошибка: ....

Но я работаю в /proj1/так ВИМ не может получить файл src/source1.cpp

EDIT: я вижу, что проблема в основном связана с выходом гну сделать

make[4]: Entering directory '<bla>/...' 

, который не обрабатывается правильно, если я использую не английскую среду. Установка оболочки с export LANG= все работает нормально.

В: Можно ли анализировать также немецкий выход gnu make?

+2

Вы не даете достаточно подробностей о том, что вы делаете для более полезного ответа, но попробуйте прочитать ': h quickfix-directory-stack'. –

+0

@SatoKatsura Ваш комментарий не дает понять, какая информация отсутствует. Путь strcuture, язык, make, vim ... чего не хватает? – Klaus

ответ

0

Прилагается локализованная версия с set errorformat+=<localized version>.

Я не знаю, что VIM поддерживает его из коробки. Посмотрев на выходе :set errorformat, что на моей машине это страшно ...

errorformat=%*[^"]"%f"%*\D%l: %m,"%f"%*\D%l: %m,%-G%f:%l: (Ea 
ch undeclared identifier is reported only once,%-G%f:%l: for ea 
ch function it appears in.),%-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,%-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 direct 
ory %*[`']%f',%D%*\a: Entering directory %*[`']%f',%X%*\a: Leav 
ing directory %*[`']%f',%DMaking %*\a in %f,%f|%l| %m 

... и изменения результатов процесса сборки из

make: Entering directory `<directory>` 

в

make: Entering `<directory>` 

я получил его на работу, расширяя errorformat как это:

:set errorformat+=%D%*\\a:\ Entering\ %*[`']%f' 
+1

Ваш 'errorformat' может быть установлен многими вещами, как правило, плагинами, наборами компиляторов или файлами' ftplugin'. Вам необходимо переопределить его в нужном месте, чтобы иметь какой-либо эффект (в частности, поэтому описание проблемы OP бесполезно). Кроме того, просто добавление локализованной версии не будет работать, потому что порядок операторов в 'errorformat' может фактически изменить ситуацию. –

+0

@SatoKatsura спасибо за замечания - сейчас я создал сценарий, похожий на вопрос OP, и добавление доказывает работу в этом случае. Обновил ответ соответственно. – leo

Смежные вопросы