Использование Vim:make with quickfix заканчивает тем, что создает новый файл, когда ошибка в заголовке

У меня есть установка с Vim, где я могу скомпилировать свой код C / C ++, используя : make , и ошибки компиляции автоматически отображаются в окне быстрого исправления с использованием следующих строк ( из вики Vim) в моем ./ vimrc :

" Automatically open, but do not go to (if there are errors) the quickfix /
" location list window, or close it when is has become empty. 
"
" Note: Must allow nesting of autocmds to enable any customizations for quickfix
" buffers. 
" Note: Normally, :cwindow jumps to the quickfix window if the command opens it
" (but not if it's already open). However, as part of the autocmd, this doesn't
" seem to happen. 
autocmd QuickFixCmdPost [^l]* nested cwindow
autocmd QuickFixCmdPost    l* nested lwindow

Теперь эта настройка работает хорошо, если есть ошибка в файле .cpp , как результат make правильно проанализирован:

$ make
g++    -c -o IsingMain.o IsingMain.cpp
g++    -c -o LatticeModel.o LatticeModel.cpp
LatticeModel.cpp: In member function ‘void LatticeModel::initialiseSystem()’:
LatticeModel.cpp:18:25: error: ‘sirand’ was not declared in this scope

т.е. vim правильно переключается на LatticeModel.cpp .


Однако, если ошибка находится в файле заголовка , вывод make неверно интерпретируется, и vim переключает / создает новый буфер (для в следующем примере make output) с именем « В файле, включенном из IsingMain.cpp », явно ошибочно предполагая, что это файл с ошибкой (на самом деле ошибка находится в LatticeModel.h ):

$ make
g++    -c -o IsingMain.o IsingMain.cpp
In file included from IsingMain.cpp:2:0:
LatticeModel.h:31:5: error: ‘Zvoid’ does not name a type

Запуск make из командной строки работает отлично, это просто проблема с quickfix, неправильно читающим вывод. Любая помощь очень ценится, дайте мне знать, если какая-либо часть этого сбивает с толку. Спасибо

ИЗМЕНИТЬ : похоже, что-то связано с неправильным форматом ошибки (как описано в этом потоке .)

РЕДАКТИРОВАТЬ 2 : Временное исправление найдено при игнорировании создать строку вывода, которая начинается с «В файл включен из», используя этот метод .

8
задан Hemmer 22 July 2011 в 20:07
поделиться