Как заставить команду erlang-compile emacs искать в каталоге include

Я начинаю работать с emacs над некоторыми существующими проектами erlang. Я хотел бы использовать команду erlang-compile, если возможно, используя ярлык C-c C-k, но это не работает, потому что большинство моих проектов используют некоторые файлы .hrl, расположенные в каталоге include, в то время как команды знают только каталоги src и ebin < em>(это обычное дерево каталогов для приложений erlang)

Я нашел обходной путь, отредактировав все директивы include и добавив относительный путь к каталогу include перед каждым именем файла, но мне это не нравится, и это не помогает, если я хочу скомпилировать с использованием параметров debug_info, export_all, родной...

Другим обходным решением является использование внешней команды, но в этом случае я потеряю связь между ошибками компиляции и исходным кодом.

Правильный способ - передать команде список опций (например, [{i,"../include"},debug_info]).

Я попытался "оценить" команду, используя M-: (erlang-compile XXX), но это не удалось (я немного не знаю синтаксиса lisp, и в любом случае кажется, что erlang-compile не имеет аргументов...)

Я видел эту тему Использовать арматуру в emacs?, но, насколько я понимаю решение, оно будет используйте внешнюю команду, и она будет вести себя как мой второй обходной путь.

есть ли другой способ или настройка для передачи этих аргументов?


person Pascal    schedule 23.09.2014    source источник


Ответы (2)


Вы можете установить включаемые пути в переменной erlang-compile-extra-opts. Например:

(setq erlang-compile-extra-opts '((i . "../include") debug_info))
person Steve Vinoski    schedule 24.09.2014
comment
Это точно отвечает на мой вопрос, но я также рассмотрю предложение @mpm. - person Pascal; 25.09.2014

Это не то, что вам нужно, но я бы рекомендовал использовать EDTS. Он содержит довольно много полезных функций, включая каталоги, которые можно настроить в .edts файле конфигурации, и он пытается скомпилировать ваш код при каждом сохранении файла.

И просто идея. Я бы попробовал использовать интерфейс Emakefile. Это кажется достаточно стандартным, и интеграция с emacs/erlang может его использовать.

person mpm    schedule 23.09.2014
comment
EDTS кажется интересным, так как он может решить больше проблем, чем тот, который я видел до сих пор (особенно параметры, передаваемые узлу проекта). В ближайшие дни посмотрю. - person Pascal; 24.09.2014