В настоящее время моя команда компиляции выглядит следующим образом:
cd ~/somedir && ./somescript.sh
Это не позволяет emacs найти файл, в котором произошла ошибка (и открыть его).
Конечно, я могу запустить M-x cd
вручную, но есть ли способ указать буферу, чтобы он изменял свой текущий каталог программно?
compilation-mode
Томас Мулард
источник
источник
Ответы:
Наконец, я прекратил полагаться на текущий каталог, так как он был слишком навязчивым, и на другие вещи, такие как ido, где заканчивались изменения ...
Вместо этого я использую добавленный каталог сборки
compilation-search-path
Нашел по этому вопросу: Как настроить путь, который Emacs 'compile-goto-error получает из буфера компиляции?
Вопрос также объясняет, что средство сопоставления каталогов может автоматически изменять каталог, если генерируются некоторые конкретные строки:
Это также настраивается, по-видимому.
источник
/path/to/build
.Вы можете просто создать буфер Dired из каталога, в который вы хотите вызвать команду компиляции, чтобы он служил якорем. Когда вы хотите скомпилировать, переключитесь на буфер Dired и выполните команду compile.
compile
будет выполнять свою команду в этом каталоге буфера Dired. Преимущество этого состоит в том, что вам не нужно M-x cdперемещаться по каталогам, когда вы хотите скомпилировать.Если вы используете
projectile
, у него есть команда с именем,projectile-compile
которая автоматически запускает команду компиляции в корне проекта, распознаваемомprojectile
.источник
Эта альтернативная команда должна сделать свое дело:
Кроме того, после того, как вы запустили компиляцию с помощью обычной
compile
команды, вы можете выполнить eval(setq default-directory "~/somedir")
в*compilation*
буфере. Это должно заставить работать навигацию по ошибкам, но это может помешатьrecompile
и друзьям сделать правильные вещи.источник