2010-12-06 1 views
7

Можно ли передать флаг «-yes» команде «перекомпилировать» в emacs?emacs (recompile -y)

Извините мое полное отсутствие (e) ноу-хау lisp. Я пресытился выходя за пределы Emacs скомпилировать мой латексный код, поэтому я добавил следующий ключ привязки к моему .emacs:

(global-set-key (kbd "<f12>") 'recompile); 

Можно ли автоматически отвечать «да» на следующую строку, которая может появиться: «Процесс компиляции запущен, убить его (да или нет)».

Кроме того, можно открыть окно, открывающее и показывающее выход для автоматического прокрутки вниз. Интересный материал, как правило, там. Возможно, его можно связать следующую команду после перекомпиляции: «C-x o, end-of-buffer».

Спасибо!

+1

Или может быть, вы могли бы просто передать `- halt-on-error` в `pdflatex` (или аналогичный). – cYrus 2015-04-11 12:03:39

ответ

7

Вот код, чтобы решить первую проблему (прерывая текущий сборник):

(defun interrupt-and-recompile() 
    "Interrupt old compilation, if any, and recompile." 
    (interactive) 
    (ignore-errors (kill-compilation)) 
    (recompile)) 

Для вашей второй задачи (прокрутка вывода компиляции), просто настроить настройки compilation-scroll-output пользователя.

+0

Это сработало, спасибо. – qonf 2010-12-06 11:49:52

2

Мне как-то нужно поместить kill-компиляцию в ignore-errors с Emacs 23.2, чтобы заставить его работать, когда процесс не запущен. В противном случае отлично работает.

(defun interrupt-and-recompile() 
    "Interrupt old compilation, if any, and recompile." 
    (interactive) 
    (ignore-errors 
    (kill-compilation)) 
    (recompile) 
) 
2

Всякий раз, когда я попытался использовать kill-compilation латексной/pdflatex он не работал. Я предполагаю, что это потому, что латекс не отвечает на SIGINT.

Вместо этого я использую следующий хак, который сначала устанавливает бит process-kill-without-querycompilation -буфер, а затем закрывает его (что убивает текущий процесс).

(defun interrupt-and-recompile() 
    "Interrupt old compilation, if any, and recompile." 
    (interactive) 
    (ignore-errors 
    (process-kill-without-query 
     (get-buffer-process 
     (get-buffer "*compilation*")))) 
    (ignore-errors 
    (kill-buffer "*compilation*")) 
    (recompile) 
) 
0

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

Вот короткое решение, автоответчики да к этому конкретному вопросу путем не советуя да-или-не-р:

ftp://download.tuxfamily.org/user42/compilation-always-kill.el

(источник: http://www.emacswiki.org/CompilationMode)

Смежные вопросы