Subject: bug#74881: 31.0.50; [PATCH] * lisp/vc/ediff-util.el: Remove temp files on kill-emacs

From: Michael Heerdegen <[email-masked]>
Date: Sun, 29 Dec 2024 02:49:14 +0100

Hi,

I'm a bit late, feel free to ignore may comments if you think it's not
worth the trouble.

Lin Sun <[email-masked]> writes:

> +(defun ediff--delete-temp-files-on-kill-emacs ()
> +  "Delete the temp-files associated with the ediff buffers."
> +  (ignore-errors
> +    (let ((inhibit-interaction t))
> +      (dolist (b (buffer-list))
> +        (with-current-buffer b
> +          (when (eq major-mode 'ediff-mode)
> +            (ediff-delete-temp-files)))))))

I think this is the same as mapping over `ediff-session-registry' which
should hold exactly the list of buffers we want.

Second: Can we move the `ignore-errors' inwards so that an error in one
case doesn't abort the complete loop?

>  ;;; Setup functions
>
> @@ -488,6 +496,7 @@ ediff-setup
>        (if (ediff-buffer-live-p ediff-meta-buffer)
>  	  (ediff-update-meta-buffer
>  	   ediff-meta-buffer nil ediff-meta-session-number))
> +      (add-hook 'kill-emacs-hook #'ediff--delete-temp-files-on-kill-emacs)

Would it be ok to avoid the above loop completely by using the buffer
local version of `kill-emacs-hook' instead?

Michael.