Function: claude-code-ide-mcp--cleanup-diff
claude-code-ide-mcp--cleanup-diff is a natively compiled function
defined in claude-code-ide-mcp-handlers.el.
Signature
(claude-code-ide-mcp--cleanup-diff TAB-NAME SESSION)
Documentation
Clean up the diff state of TAB-NAME owned by SESSION.
Source Code
;; Defined in /nix/store/yjvbhwl7p6zrbw9xlnni7y4hra8sa3pl-emacs-packages-deps/share/emacs/site-lisp/claude-code-ide-mcp-handlers.el
(defun claude-code-ide-mcp--cleanup-diff (tab-name session)
"Clean up the diff state of TAB-NAME owned by SESSION."
(let ((active-diffs (claude-code-ide-mcp--get-active-diffs session)))
(when-let* ((diff-info (and active-diffs (gethash tab-name active-diffs))))
(let ((buffer-A (alist-get 'buffer-A diff-info))
(buffer-B (alist-get 'buffer-B diff-info))
(control-buf (alist-get 'control-buffer diff-info))
(file-exists (alist-get 'file-exists diff-info))
;; First try to get buffers from diff-info (stored during close_tab)
(error-buffer (alist-get 'error-buffer diff-info))
(diff-buffer (alist-get 'diff-buffer diff-info))
(fine-diff-buffer (alist-get 'fine-diff-buffer diff-info))
(custom-diff-buffer (alist-get 'custom-diff-buffer diff-info)))
;; Get all ediff buffers from control buffer before killing it
(when (and control-buf (buffer-live-p control-buf))
(with-current-buffer control-buf
;; Capture all ediff-related buffers
(claude-code-ide-debug "Capturing ediff buffers from control buffer")
(when (and (boundp 'ediff-error-buffer) ediff-error-buffer (not error-buffer))
(setq error-buffer ediff-error-buffer))
(when (and (boundp 'ediff-diff-buffer) ediff-diff-buffer (not diff-buffer))
(setq diff-buffer ediff-diff-buffer))
(when (and (boundp 'ediff-fine-diff-buffer) ediff-fine-diff-buffer (not fine-diff-buffer))
(setq fine-diff-buffer ediff-fine-diff-buffer))
(when (and (boundp 'ediff-custom-diff-buffer) ediff-custom-diff-buffer (not custom-diff-buffer))
(setq custom-diff-buffer ediff-custom-diff-buffer))
(setq ediff-quit-hook nil)) ; Prevent quit hooks from running
(kill-buffer control-buf))
;; Kill all the auxiliary buffers
(dolist (buf (list error-buffer diff-buffer fine-diff-buffer custom-diff-buffer))
(when (and buf (buffer-live-p buf))
(claude-code-ide-debug "Killing ediff auxiliary buffer: %s" (buffer-name buf))
(kill-buffer buf)))
;; Kill the temporary buffer (buffer B)
(when (and buffer-B (buffer-live-p buffer-B))
(kill-buffer buffer-B))
;; Kill buffer A only if it was created for a new file
(when (and buffer-A (buffer-live-p buffer-A) (not file-exists))
;; This is a *New file: buffer that we created
(kill-buffer buffer-A))
;; Remove from active diffs
(remhash tab-name active-diffs)))))