Sangat menjengkelkan melihat jendela kompilasi muncul ketika berhasil. Bagaimana cara menghapusnya secara otomatis?
Saya ingin melihatnya jika tidak berhasil.
sumber
Sangat menjengkelkan melihat jendela kompilasi muncul ketika berhasil. Bagaimana cara menghapusnya secara otomatis?
Saya ingin melihatnya jika tidak berhasil.
tahun lalu di saluran IRC #emacs saya mendapatkan sedikit kode yang telah saya gunakan selamanya. Nilai "2 detik" menetapkan jumlah waktu jendela kompilasi yang berhasil tetap terlihat.
; 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!")))))
Melihat cepat pada kode (di pustaka compile.el
), Anda seharusnya bisa membunuh atau menyembunyikan buffer yang ditampilkan dengan menggunakan fungsi pada hook compilation-finish-functions
. Untuk melakukannya, gunakan sesuatu seperti ini:
(add-hook 'compilation-finish-functions (lambda (buf strg) (kill-buffer buf))
Jika Anda tidak ingin membunuh buffer, gunakan sesuatu seperti ini:
(add-hook 'compilation-finish-functions
(lambda (buf strg)
(let ((win (get-buffer-window buf 'visible)))
(when win (delete-window win)))))
Secara umum, Anda dapat membayangkan bahwa untuk sesuatu seperti ini mungkin ada pengait yang sudah disediakan, sehingga Anda dapat dengan mudah melampirkan kode di tempat yang signifikan dalam pemrosesan. Penjelajahan kecil kode atau penggunaan M-x apropos
biasanya akan memberi tahu Anda dengan cepat. Nama kait biasanya diakhiri dengan -hook
atau -functions
.
Utas ini juga relevan, jika seseorang tertarik:
/programming/11043004/emacs-compile-buffer-auto-close
Penghargaan jatuh ke jpkotta penulis asli . Ini jawabannya:
Saya menggunakan yang berikut ini untuk kompilasi. Itu membuat buffer kompilasi jika ada peringatan atau kesalahan, dan menguburnya jika tidak (setelah 1 detik).
(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)
Saya memiliki cuplikan ini di
.emacs.d
:sumber