Справка:
При вызове команды vim make она изменяет текущий рабочий каталог (cwd) на каталог текущего файла. Затем он запускает makeprg оттуда. Я хочу запретить команде make изменять cwd и вместо этого вызвать makeprg из каталога родительского экземпляра vim
Пример:
У меня есть следующая стандартная иерархия проекта Perl
project/
lib/
My/
Module/
Foo.pm
Мой PERL5LIB установлен на
PERL5LIB=':lib'
В моем .vimrc у меня есть
compiler perl
set makeprg=perl\ -c\ %
Я редактирую свой модуль, используя vim из корневого уровня проекта:
/path/to/project$ vim lib/My/Module/Foo.pm
В vim: pwd работает как положено:
:pwd
"/path/to/project"
Также вызов! Perl -c работает как положено, находит мой проект lib и отображает результат в окне оболочки:
:!perl-c %
OUTPUT:
perl -c lib/My/Module/Foo.pm
lib/My/Module/Foo.pm Syntax ok
Однако: make возвращает ошибку
:make
"Can't open perl script lib/My/Module/Foo.pm : No such file or directory"
Установка makeprg в pwd показывает проблему
:set makeprg=pwd
:make
"/path/to/project/lib/My/Module"
Поэтому, прежде чем make запустит makeprg, он переключается в каталог текущего файла, поэтому perl не может найти там «lib /.../ Foo.pm».
Можно ли как-то помешать make сделать это?