branch: elpa/aidermacs
commit e227243eb0d5897367c89934a828c02b434bbb29
Author: Mingde (Matthew) Zeng <matthew...@posteo.net>
Commit: Mingde (Matthew) Zeng <matthew...@posteo.net>

    Check --no-auto-accept-architect against aider version
    
    Addresses #76
    
    Signed-off-by: Mingde (Matthew) Zeng <matthew...@posteo.net>
---
 aidermacs.el | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/aidermacs.el b/aidermacs.el
index ccc1e1cbb7..6af003bc37 100644
--- a/aidermacs.el
+++ b/aidermacs.el
@@ -89,6 +89,25 @@ When nil, disable auto-commits requiring manual git commits."
 When nil, require explicit confirmation before applying changes."
   :type 'boolean)
 
+(defun aidermacs--check-aider-version ()
+  "Check the installed aider version.
+Returns a version string like \"0.77.0\" or nil if version can't be 
determined."
+  (with-temp-buffer
+    (when (= 0 (call-process aidermacs-program nil t nil "--version"))
+      (goto-char (point-min))
+      (when (re-search-forward "aider \\([0-9]+\\.[0-9]+\\.[0-9]+\\)" nil t)
+        (match-string 1)))))
+
+(defun aidermacs--version-greater-equal (v1 v2)
+  "Return t if version V1 is greater than or equal to V2."
+  (let ((v1-parts (mapcar #'string-to-number (split-string v1 "\\.")))
+        (v2-parts (mapcar #'string-to-number (split-string v2 "\\."))))
+    (or (> (car v1-parts) (car v2-parts))
+        (and (= (car v1-parts) (car v2-parts))
+             (or (> (cadr v1-parts) (cadr v2-parts))
+                 (and (= (cadr v1-parts) (cadr v2-parts))
+                      (>= (nth 2 v1-parts) (nth 2 v2-parts))))))))
+
 (defun aidermacs-project-root ()
   "Get the project root using VC-git, or fallback to file directory.
 This function tries multiple methods to determine the project root."
@@ -252,6 +271,10 @@ This function sets up the appropriate arguments and 
launches the process."
                              aidermacs-config-file
                              (cl-some (lambda (x) (member x flat-extra-args))
                                       '("--config" "-c"))))
+         ;; Check aider version for auto-accept-architect support
+         (aider-version (aidermacs--check-aider-version))
+         (supports-auto-accept-architect (and aider-version
+                                             (aidermacs--version-greater-equal 
aider-version "0.77.0")))
          (backend-args
           (if has-config-arg
               ;; Only need to add aidermacs-config-file manually
@@ -266,7 +289,11 @@ This function sets up the appropriate arguments and 
launches the process."
                  (list "--model" aidermacs-default-model)))
              (unless aidermacs-auto-commits
                '("--no-auto-commits"))
-             (unless aidermacs-auto-accept-architect
+             ;; Only add --no-auto-accept-architect if:
+             ;; 1. User has disabled auto-accept 
(aidermacs-auto-accept-architect is nil)
+             ;; 2. Aider version supports this flag (>= 0.77.0)
+             (when (and (not aidermacs-auto-accept-architect)
+                        supports-auto-accept-architect)
                '("--no-auto-accept-architect"))
              (when aidermacs-subtree-only
                '("--subtree-only")))))

Reply via email to