Emacs (перекомпилировать -y) - PullRequest
       4

Emacs (перекомпилировать -y)

7 голосов
/ 06 декабря 2010

Возможно ли передать флаг "-yes" команде "Recompile" в emacs?

Прошу прощения за полное отсутствие (е) ноу-хау Лиспа. Мне надоело выходить из Emacs для компиляции моего латексного кода, поэтому я добавил следующую привязку ключей к моему .emacs:

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

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

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

Спасибо!

Ответы [ 4 ]

7 голосов
/ 06 декабря 2010

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

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

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

2 голосов
/ 18 января 2013

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

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

(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)
)
2 голосов
/ 20 апреля 2011

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

(defun interrupt-and-recompile ()
  "Interrupt old compilation, if any, and recompile."
  (interactive)
  (ignore-errors
    (kill-compilation))
  (recompile)
)
0 голосов
/ 08 ноября 2014

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

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

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

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

...