branch: elpa/aidermacs
commit 677e867d0f952386e029dc89024d9d54160c41dc
Merge: c5c867dcee 9fc3b04775
Author: Kang Tu <[email protected]>
Commit: Kang Tu <[email protected]>
Merge branch 'main' of github.com:tninja/aider.el
---
README.org | 6 +++++-
aider.el | 42 +++++++++++++++++++++++++-----------------
2 files changed, 30 insertions(+), 18 deletions(-)
diff --git a/README.org b/README.org
index 8ba07305c6..5382646e3a 100644
--- a/README.org
+++ b/README.org
@@ -17,7 +17,7 @@
- Git Repository-Specific aider Sessions in Emacs: Automatically identify the
Git repository of the current file and create a new aider session for it.
Multiple aider sessions can exist for different Git repositories.
-- Batch add files from dired buffer (aider-batch-add-dired-marked-files): Add
multiple Dired marked files to the Aider buffer
+- Batch add files from dired buffer (aider-batch-add-dired-marked-files): Add
multiple Dired marked files to the Aider buffer. These files can be searched
from repo with aider-repo-find-name-dired command
- Region-Based Refactor Support (aider-region-refactor): You can select a
region (e.g., a code block) in a file and ask aider to refactor it.
@@ -39,6 +39,10 @@
(global-set-key (kbd "C-c a") 'aider-transient-menu))
#+END_SRC
+** Optional
+
+- If you use helm, maybe you can load the helm-aider.el manually. That file
added support of command history and completion from helm.
+
* Screenshot
[[file:./screenshot.png]]
diff --git a/aider.el b/aider.el
index ce50fb6292..1e48089cf2 100644
--- a/aider.el
+++ b/aider.el
@@ -11,6 +11,15 @@
;;; Code:
+(defun aider-git-repo-root-dired ()
+ "Open a Dired buffer at the root of the current Git repository."
+ (interactive)
+ (let ((git-repo-path (shell-command-to-string "git rev-parse
--show-toplevel")))
+ (if (string-match-p "fatal" git-repo-path)
+ (message "The current buffer is not in a Git repository.")
+ (let ((repo-path (string-trim git-repo-path)))
+ (dired-other-window repo-path)))))
+
(require 'comint)
(require 'transient)
(require 'which-func)
@@ -57,6 +66,7 @@ This function can be customized or redefined by the user."
("f" "Add Current File" aider-add-current-file)
("F" "Find Files in the Git Repo" aider-repo-find-name-dired)
("b" "Batch Add Dired Marked Files" aider-batch-add-dired-marked-files)
+ ("R" "Open Git Repo Root Dired" aider-git-repo-root-dired) ;; 新增的菜单项
]
["Code change"
("c" "Code Change" aider-code-change)
@@ -67,7 +77,6 @@ This function can be customized or redefined by the user."
("q" "Ask Question" aider-ask-question)
("t" "Architect Discussion" aider-architect-discussion)
("d" "Debug Exception" aider-debug-exception) ;; Menu item for debug
command
- ("Q" "Ask Question Under Cursor" aider-ask-question-under-cursor)
]
["Other"
("g" "General Command" aider-general-command)
@@ -132,9 +141,6 @@ If not in a git repository, an error is raised."
;; Shared helper function to send commands to corresponding aider buffer
(defun aider--send-command (command &optional not-switch-to-buffer)
"Send COMMAND to the corresponding aider comint buffer after performing
necessary checks.
-COMMAND should be a string representing the command to send.
-SWITCH-TO-BUFFER determines whether to switch to the Aider buffer after
sending the command. Default is t."
- "Send COMMAND to the corresponding aider comint buffer after performing
necessary checks.
COMMAND should be a string representing the command to send."
;; Check if the corresponding aider buffer exists
(if-let ((aider-buffer (get-buffer (aider-buffer-name))))
@@ -193,7 +199,7 @@ COMMAND should be a string representing the command to
send."
"Prompt the user for a command and send it to the corresponding aider comint
buffer prefixed with \"/help \"."
(interactive)
(let ((command (aider-read-string "Enter help question: ")))
- (aider--send-command (concat "/help " command))))
+ (aider-send-command-with-prefix "/help " command)))
;; New function to get command from user and send it prefixed with "/architect
"
(defun aider-architect-discussion ()
@@ -234,8 +240,9 @@ The command will be formatted as \"/architect \" followed
by the user command an
(function-name (which-function))
(user-command (aider-read-string "Enter your refactor
instruction: "))
(command (aider-region-refactor-generate-command region-text
function-name user-command)))
- (aider--send-command command))
- (aider-add-current-file)
+ (aider-add-current-file)
+ (aider--send-command command)
+ )
(message "No region selected.")))
(defun aider-send-command-with-prefix (prefix command)
@@ -243,13 +250,6 @@ The command will be formatted as \"/architect \" followed
by the user command an
(aider-add-current-file)
(aider--send-command (concat prefix command)))
-;; New function to send "ask <line under cursor>" to the Aider buffer
-(defun aider-ask-question-under-cursor ()
- "Send the command \"ask <line under cursor>\" to the Aider buffer."
- (interactive)
- (let ((line (thing-at-point 'line t)))
- (aider--send-command (concat "/ask " (string-trim line)))))
-
;;; functions for dired related
;; New function to add multiple Dired marked files to Aider buffer
@@ -272,7 +272,16 @@ The command will be formatted as \"/architect \" followed
by the user command an
(message "Not in a git repository")
(find-name-dired repo-path pattern))))
-;;; functions for .aider file
+(defun aider-git-repo-root-dired ()
+ "Open a Dired buffer at the root of the current Git repository."
+ (interactive)
+ (let ((git-repo-path (shell-command-to-string "git rev-parse
--show-toplevel")))
+ (if (string-match-p "fatal" git-repo-path)
+ (message "The current buffer is not in a Git repository.")
+ (let ((repo-path (string-trim git-repo-path)))
+ (dired-other-window repo-path)))))
+
+;;; functions for .aider file related
;; New function to send "<line under cursor>" to the Aider buffer
(defun aider-send-line-under-cursor ()
@@ -297,7 +306,6 @@ The command will be formatted as \"/architect \" followed
by the user command an
(defun aider-mode-setup ()
"Setup key bindings for Aider mode."
(local-set-key (kbd "C-c C-n") 'aider-send-line-under-cursor)
- (local-set-key (kbd "C-c C-b") 'aider-send-block)
(local-set-key (kbd "C-c C-c") 'aider-send-paragraph))
(add-hook 'aider-mode-hook 'aider-mode-setup)
@@ -305,7 +313,7 @@ The command will be formatted as \"/architect \" followed
by the user command an
(define-derived-mode aider-mode fundamental-mode "Aider"
"Major mode for editing Aider files."
;; Add any additional setup for aider-mode here
-)
+ )
(add-to-list 'auto-mode-alist '("\\.aider\\'" . aider-mode))