From ffe12ff2503917e47c0356195b31430996c148f9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Fri, 22 Jul 2022 09:23:02 +0100 Subject: [PATCH] Clean up more robustly in compile.el * lisp/progmodes/compile.el (compilation-sentinel): Use unwind-protect. --- lisp/progmodes/compile.el | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index c71a50d4fde..a665fccc733 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -2464,22 +2464,23 @@ commands of Compilation major mode are available. See (defun compilation-sentinel (proc msg) "Sentinel for compilation buffers." (if (memq (process-status proc) '(exit signal)) - (let ((buffer (process-buffer proc))) - (if (null (buffer-name buffer)) - ;; buffer killed - (set-process-buffer proc nil) - (with-current-buffer buffer - ;; Write something in the compilation buffer - ;; and hack its mode line. - (compilation-handle-exit (process-status proc) - (process-exit-status proc) - msg) - ;; Since the buffer and mode line will show that the - ;; process is dead, we can delete it now. Otherwise it - ;; will stay around until M-x list-processes. - (delete-process proc))) + (unwind-protect + (let ((buffer (process-buffer proc))) + (if (null (buffer-name buffer)) + ;; buffer killed + (set-process-buffer proc nil) + (with-current-buffer buffer + ;; Write something in the compilation buffer + ;; and hack its mode line. + (compilation-handle-exit (process-status proc) + (process-exit-status proc) + msg)))) (setq compilation-in-progress (delq proc compilation-in-progress)) - (compilation--update-in-progress-mode-line)))) + (compilation--update-in-progress-mode-line) + ;; Since the buffer and mode line will show that the + ;; process is dead, we can delete it now. Otherwise it + ;; will stay around until M-x list-processes. + (delete-process proc)))) (defun compilation-filter (proc string) "Process filter for compilation buffers. -- 2.39.5