Как я могу автоматически указать имя файла текущего буфера, когда я выполняю команду «компилировать» в Emacs?

Как вы уже знаете, мы видим команду make -k при выполнении M-x compile в режиме emacs c++.

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

(1) make an alias in shell init file for g++ compile command.
    alias c="g++ -g -Wall -O0 -std=c++11"
(2) map 'M-x compile' command to Function Key F9 in .emacs
    (global-set-key [f9] 'compile)
(3) write c++ code
(4) press F9 and modify filename to current open file

Например, вы можете увидеть «Compile command: c vvv.cpp» на снимке экрана ниже. (Этот снимок экрана представляет собой простой код, который я сделал для этого вопроса. «c» — это псевдоним для команды и параметров компиляции). Но это имя открытого файла на самом деле «vector1.cpp», поэтому «vvv.cpp» должен быть автоматически заменен по 'vector1.cpp'.

введите здесь описание изображения

Я думаю, это неплохо. Но я хотел бы найти способ, которым мне не нужно изменять текущее имя файла. «Просто нажмите F9 и RET, и текущий файл будет скомпилирован». Это именно то, что я хочу.

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


person cloudrain21    schedule 06.09.2015    source источник


Ответы (1)


В EmacsWiki есть хороший раздел, объясняющий, как можно настроить команду compile: Скомпилировать команду

В вашем случае вы можете добавить крючок в режим С++, чтобы определить переменную compile-command по мере необходимости. Следуя примеру из вики:

(add-hook 'c++-mode-hook
  (lambda ()
    (set (make-local-variable 'compile-command)
         (format "g++ -g -Wall -O0 -std=c++11 %s" (buffer-name)))))

Добавление этого фрагмента в ваш .emacs должно помочь.

person tonio    schedule 07.09.2015