branch: elpa/aidermacs
commit fd786d4d2450f1405fb86534c2e3ee109e95825b
Author: Mingde (Matthew) Zeng <[email protected]>
Commit: Mingde (Matthew) Zeng <[email protected]>
Fix ediff-buffers not populating
---
aidermacs-backend-comint.el | 8 +++----
aidermacs-backend-vterm.el | 10 ++++-----
aidermacs.el | 53 +++++++++++----------------------------------
3 files changed, 22 insertions(+), 49 deletions(-)
diff --git a/aidermacs-backend-comint.el b/aidermacs-backend-comint.el
index 60cf6aa349..c0c29b5e60 100644
--- a/aidermacs-backend-comint.el
+++ b/aidermacs-backend-comint.el
@@ -109,10 +109,10 @@ that was matched at the start of the current syntax
block.")
(aidermacs--store-output aidermacs--comint-output-temp)
;; Check if any files were edited and show ediff if needed
(let ((edited-files (aidermacs--detect-edited-files)))
- (when edited-files
- (aidermacs--show-ediff-for-edited-files edited-files)))
- (setq aidermacs--comint-output-temp "")
- (aidermacs--cleanup-all-temp-files))))
+ (if edited-files
+ (aidermacs--show-ediff-for-edited-files edited-files)
+ (aidermacs--cleanup-all-temp-files)))
+ (setq aidermacs--comint-output-temp ""))))
(defun aidermacs-reset-font-lock-state ()
"Reset font lock state to default for processing a new source block."
diff --git a/aidermacs-backend-vterm.el b/aidermacs-backend-vterm.el
index 764b5daba4..660f4929d6 100644
--- a/aidermacs-backend-vterm.el
+++ b/aidermacs-backend-vterm.el
@@ -94,13 +94,13 @@ If the finish sequence is detected, store the output via
;; If we found a shell prompt
(when (string-match-p expected prompt-line)
- (let ((output (buffer-substring-no-properties start-point
seq-start)))
+ (let ((output (buffer-substring-no-properties start-point
seq-start))
+ (edited-files (aidermacs--detect-edited-files)))
(aidermacs--store-output (string-trim output))
;; Check if any files were edited and show ediff if needed
- (let ((edited-files (aidermacs--detect-edited-files)))
- (when edited-files
- (aidermacs--show-ediff-for-edited-files edited-files)))
- (aidermacs--cleanup-all-temp-files))
+ (if edited-files
+ (aidermacs--show-ediff-for-edited-files edited-files)
+ (aidermacs--cleanup-all-temp-files)))
(set-process-filter proc orig-filter))))))))
(defun aidermacs--vterm-output-advice (orig-fun &rest args)
diff --git a/aidermacs.el b/aidermacs.el
index 22ef030471..956dbe96c0 100644
--- a/aidermacs.el
+++ b/aidermacs.el
@@ -320,11 +320,11 @@ This is useful for working in monorepos where you want to
limit aider's scope."
(defun aidermacs--cleanup-all-temp-files ()
"Clean up all temporary files created for ediff sessions.
This is called when all ediff sessions are complete."
- (when (boundp 'aidermacs--pre-edit-files)
+ (with-current-buffer (get-buffer (aidermacs-get-buffer-name))
(dolist (file-pair aidermacs--pre-edit-files)
(let ((temp-file (cdr file-pair)))
(when (and temp-file (stringp temp-file) (file-exists-p temp-file))
- (message "Cleaning up remaining temp file: %s" temp-file)
+ (message "Deleting %s" temp-file)
(delete-file temp-file))))
;; Clear the list after cleanup
(setq aidermacs--pre-edit-files nil)
@@ -357,35 +357,9 @@ This function is called when an ediff session is quit and
performs two tasks:
(let* ((file-name (match-string 1 (buffer-name buf)))
(full-path (when file-name
(expand-file-name file-name
(aidermacs-project-root)))))
-
- ;; Kill the pre-edit buffer
(when (buffer-live-p buf)
- (message "Cleaning up pre-edit buffer for %s" file-name)
- (kill-buffer buf))
-
- ;; If we have a file path, clean up associated resources
- (when full-path
- ;; Remove this file from the buffer tracking list
- (when (boundp 'aidermacs--pre-edit-buffers)
- (setq aidermacs--pre-edit-buffers
- (assoc-delete-all full-path aidermacs--pre-edit-buffers)))
-
- ;; Find and delete the temp file for this file
- (let* ((pre-edit-file-pair (assoc full-path
aidermacs--pre-edit-files))
- (temp-file (and pre-edit-file-pair (cdr pre-edit-file-pair))))
- (when (and temp-file (stringp temp-file) (file-exists-p temp-file))
- (message "Cleaning up temp file for %s" file-name)
- (delete-file temp-file)))
-
- ;; Remove this file from the temp file tracking list
- (when (boundp 'aidermacs--pre-edit-files)
- (setq aidermacs--pre-edit-files
- (assoc-delete-all full-path aidermacs--pre-edit-files)))))))
-
- ;; Process the next file in the queue if any remain
- (when (and (boundp 'aidermacs--ediff-queue)
- aidermacs--ediff-queue)
- (aidermacs--process-next-ediff-file)))
+ (kill-buffer buf)))))
+ (aidermacs--process-next-ediff-file))
(defun aidermacs--setup-ediff-cleanup-hooks ()
"Set up hooks to ensure proper cleanup of temporary buffers after ediff."
@@ -433,17 +407,17 @@ This function is called when an ediff session is quit and
performs two tasks:
(defun aidermacs--process-next-ediff-file ()
"Process the next file in the ediff queue for the current buffer."
- (when aidermacs--ediff-queue
- (let ((file (pop aidermacs--ediff-queue)))
- (aidermacs--show-ediff-for-file file))))
+ (with-current-buffer (get-buffer (aidermacs-get-buffer-name))
+ (if aidermacs--ediff-queue
+ (let ((file (pop aidermacs--ediff-queue)))
+ (aidermacs--show-ediff-for-file file))
+ (aidermacs--cleanup-all-temp-files))))
(defun aidermacs--show-ediff-for-file (file)
"Show ediff for FILE."
(let* ((full-path (expand-file-name file (aidermacs-project-root)))
- (pre-edit-pair (when (boundp 'aidermacs--pre-edit-files)
- (assoc full-path aidermacs--pre-edit-files)))
+ (pre-edit-pair (assoc full-path aidermacs--pre-edit-files))
(temp-file (and pre-edit-pair (cdr pre-edit-pair))))
-
(if (and temp-file
(stringp temp-file)
(file-exists-p temp-file))
@@ -452,20 +426,19 @@ This function is called when an ediff session is quit and
performs two tasks:
(let* ((pre-edit-buffer (aidermacs--create-pre-edit-buffer full-path
temp-file))
(current-buffer (or (get-file-buffer full-path)
(find-file-noselect full-path))))
-
+ (with-current-buffer current-buffer
+ (revert-buffer t t t))
;; Store buffer for cleanup
(unless (boundp 'aidermacs--pre-edit-buffers)
(setq-local aidermacs--pre-edit-buffers nil))
(push (cons full-path pre-edit-buffer) aidermacs--pre-edit-buffers)
-
;; Debug info
(message "Comparing %s with %s" temp-file full-path)
;; Give Emacs a moment to finish buffer setup
- (sit-for 0.1)
;; Start ediff session
(ediff-buffers pre-edit-buffer current-buffer)))
;; If no pre-edit temp file found, continue with next file
- (message "No pre-edit file found for %s, skipping" file)
+ (message "No pre-edit file found for %s in %s out of %s, skipping" file
pre-edit-pair aidermacs--pre-edit-files)
(aidermacs--process-next-ediff-file))))
(defun aidermacs--show-ediff-for-edited-files (edited-files)