É irritante ver a janela de compilação aparecer quando for bem-sucedida. Como remover isso automaticamente?
Eu quero ver isso se não for bem sucedido.
fonte
É irritante ver a janela de compilação aparecer quando for bem-sucedida. Como remover isso automaticamente?
Eu quero ver isso se não for bem sucedido.
anos atrás, no canal de IRC #emacs, recebi esse código que uso desde sempre. O valor "2 s" define a quantidade de tempo que a janela de compilação bem-sucedida permanece visível.
; from enberg on #emacs
(setq compilation-finish-function
(lambda (buf str)
(if (null (string-match ".*exited abnormally.*" str))
;;no errors, make the compilation window go away in a few seconds
(progn
(run-at-time
"2 sec" nil 'delete-windows-on
(get-buffer-create "*compilation*"))
(message "No Compilation Errors!")))))
Observando rapidamente o código (na biblioteca compile.el
), você poderá matar ou ocultar o buffer exibido usando uma função no gancho compilation-finish-functions
. Para fazer isso, use algo como isto:
(add-hook 'compilation-finish-functions (lambda (buf strg) (kill-buffer buf))
Se você não deseja matar o buffer, use algo como isto:
(add-hook 'compilation-finish-functions
(lambda (buf strg)
(let ((win (get-buffer-window buf 'visible)))
(when win (delete-window win)))))
Em geral, você pode imaginar que, para algo assim, provavelmente já existe um gancho, para que você possa anexar facilmente o código em um local tão significativo no processamento. Um pouco de navegação no código ou uso M-x apropos
normalmente o informará rapidamente. Os nomes dos ganchos geralmente terminam em -hook
ou -functions
.
Este tópico também é relevante, caso alguém esteja interessado:
/programming/11043004/emacs-compile-buffer-auto-close
O crédito vai para o autor original jpkotta . Aqui está a resposta dele:
Eu uso o seguinte para compilação. Ele mantém o buffer de compilação se houver avisos ou erros e o enterra de outra forma (após 1 segundo).
(defun bury-compile-buffer-if-successful (buffer string) "Bury a compilation buffer if succeeded without warnings " (if (and (string-match "compilation" (buffer-name buffer)) (string-match "finished" string) (not (with-current-buffer buffer (search-forward "warning" nil t)))) (run-with-timer 1 nil (lambda (buf) (bury-buffer buf) (switch-to-prev-buffer (get-buffer-window buf) 'kill)) buffer))) (add-hook 'compilation-finish-functions 'bury-compile-buffer-if-successful)
Eu tenho esse trecho no meu
.emacs.d
:fonte