Emacs: установить команду компиляции для каждого буфера

Итак, предположим, у меня есть файл file.c и файл anothr.c. Я хотел бы установить команду компиляции для каждого из этих файлов отдельно, скажем: gcc -Wall -O3 -o f file.c, а также gcc -Wall -std=c99 -o a another.c, Как я могу установить gcc команда для этого буфера, чтобы каждый раз, когда я его открывал, он знал, как его скомпилировать? Есть ли что-то с // -*- директива или что-то в этом роде? Благодарю.

2 ответа

Решение

Да, вы можете использовать директиву в файле, а также установить другое значение. Попробуйте это в первой или второй строке:

// -*- compile-command: "gcc -Wall -O3 -o f file.c" -*-

а затем перезагрузите файл с C-x v так что настройка вступит в силу.

Я иногда ставлю такие вещи как c-indent-level: 4; c-basic-offset: 4; и там тоже.

То, что вы ищете, называется файловыми локальными переменными, или иногда просто "локальными переменными", в декларативном формате, описанном здесь.

В дополнение к синтаксису, приведенному в ответе Дирка, вы можете написать блок "локальные переменные" в конце вашего файла:

/* Local Variables: */
/* compile-command:"gcc -Wall -O3 -o f file.c" */
/* End: */

Вы можете использовать интерактивную функцию add-file-local-variable чтобы поддержать этот список, если вы не хотите вводить каждую запись вручную.

Другие вопросы по тегам