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

    Fix melpazoid warnings
---
 README.md                   | 39 +++++++++++++++++++++++++++++++--------
 aidermacs-backend-comint.el | 25 +++++++++++++++----------
 aidermacs-backend-vterm.el  | 16 ++++++++--------
 aidermacs.el                | 36 +++++++++++++++++++++++-------------
 4 files changed, 77 insertions(+), 39 deletions(-)

diff --git a/README.md b/README.md
index 5198a9757f..68421b7016 100644
--- a/README.md
+++ b/README.md
@@ -47,11 +47,13 @@ Your contributions are essential to making Aidermacs the 
best AI pair programmin
   :config
   (setq aidermacs-default-model "sonnet")
   (global-set-key (kbd "C-c a") 'aidermacs-transient-menu)
-  ; Ensure emacs can access *_API_KEY through .bashrc or setenv
-  (setenv "ANTHROPIC_API_KEY" anthropic-api-key)
+  ; Enable minor mode for Aider files
+  (aidermacs-setup-minor-mode)
   ; See the Configuration section below
   (setq aidermacs-auto-commits t)
-  (setq aidermacs-use-architect-mode t))
+  (setq aidermacs-use-architect-mode t)
+  ; Ensure emacs can access *_API_KEY through .bashrc or setenv
+  (setenv "ANTHROPIC_API_KEY" anthropic-api-key))
 ```
 
 ### Sample Config With Doom Emacs
@@ -299,22 +301,43 @@ When using Aidermacs with Doom Emacs, you can enable 
Doom-specific keybindings b
 
 The keybindings are only activated in buffers that are part of a Git 
repository, keeping your global keybinding space clean.
 
-### Working with Prompt Blocks in `.aider*` files
+### Prompt Files Minor Mode
+
+Aidermacs provides a minor mode that makes it easy to work with prompt files 
and other Aider-related files. The minor mode can be enabled automatically for 
specific files by calling `(aidermacs-setup-minor-mode)` in your config:
+
+```emacs-lisp
+(aidermacs-setup-minor-mode)
+```
 
-When editing `.aider.prompt.org` or other `.aider*` files, these keybindings 
are available:
+When enabled, the minor mode provides these convenient keybindings:
 
 - `C-c C-n` or `C-<return>`: Send line/region line-by-line
 - `C-c C-c`: Send block/region as whole
 - `C-c C-z`: Switch to Aidermacs buffer
 
-### Prompt Files
+The minor mode is automatically enabled for:
+- `.aider.prompt.org` files (create with `M-x aidermacs-open-prompt-file`)
+- `.aider.chat.md` files
+- `.aider.chat.history.md` files
+- `.aider.input.history` files
+
+#### Working with Prompt Files
 
-The `.aider.prompt.org` file (created with `M-x aidermacs-open-prompt-file`) 
is useful for:
+The `.aider.prompt.org` file is particularly useful for:
 - Storing frequently used prompts
 - Documenting common workflows
 - Quick access to complex instructions
 
-The file is automatically recognized and enables Aidermacs minor mode with the 
above keybindings.
+You can customize which files automatically enable the minor mode by 
configuring `aidermacs-auto-mode-files`:
+
+```emacs-lisp
+(setq aidermacs-auto-mode-files
+      '(".aider.prompt.org"
+        ".aider.chat.md"
+        ".aider.chat.history.md"
+        ".aider.input.history"
+        "my-custom-aider-file.org"))  ; Add your own files
+```
 
 ## Aidermacs vs aider.el
 
diff --git a/aidermacs-backend-comint.el b/aidermacs-backend-comint.el
index 462e12649c..f6eb21384b 100644
--- a/aidermacs-backend-comint.el
+++ b/aidermacs-backend-comint.el
@@ -77,6 +77,11 @@ This allows for multi-line input without sending the 
command."
 (defvar-local aidermacs--syntax-work-buffer nil
   "Temporary buffer used for syntax highlighting operations.")
 
+(defvar-local aidermacs--syntax-block-marker nil
+  "Store the current block marker (SEARCH/REPLACE/fence) being processed.
+This variable holds the actual marker text (e.g., <<<<<<< SEARCH, =======, 
etc.)
+that was matched at the start of the current syntax block.")
+
 (defun aidermacs-reset-font-lock-state ()
   "Reset font lock state to default for processing a new source block."
   (setq aidermacs--syntax-block-delimiter nil
@@ -109,7 +114,7 @@ OUTPUT is the text to be processed."
                (line-text (buffer-substring
                            next-line
                            (min (point-max) (+ next-line (length 
aidermacs-search-marker)))))
-               marker)
+               aidermacs--syntax-block-marker)
           (cond ((equal line-text aidermacs-search-marker)
                  ;; Next line is a SEARCH marker. use that instead of the 
fence marker
                  (re-search-forward (format "^\\(%s\\)" 
aidermacs-search-marker) nil t))
@@ -120,21 +125,21 @@ OUTPUT is the text to be processed."
 
       (unless aidermacs--syntax-last-output-pos
         ;; Set up new block state
-        (let ((block-marker (match-string 1)))
-          (setq aidermacs--syntax-block-start-pos (line-end-position)
-                aidermacs--syntax-block-end-pos (line-end-position)
-                aidermacs--syntax-block-delimiter
-                (pcase block-marker
-                  ((pred (equal aidermacs-search-marker)) 
aidermacs-diff-marker)
-                  ((pred (equal aidermacs-diff-marker)) 
aidermacs-replace-marker)
-                  ((pred (equal aidermacs-fence-marker)) 
aidermacs-fence-marker))))
+        (setq aidermacs--syntax-block-marker (match-string 1)
+              aidermacs--syntax-block-start-pos (line-end-position)
+              aidermacs--syntax-block-end-pos (line-end-position)
+              aidermacs--syntax-block-delimiter
+              (pcase aidermacs--syntax-block-marker
+                ((pred (equal aidermacs-search-marker)) aidermacs-diff-marker)
+                ((pred (equal aidermacs-diff-marker)) aidermacs-replace-marker)
+                ((pred (equal aidermacs-fence-marker)) 
aidermacs-fence-marker)))
 
         (with-current-buffer aidermacs--syntax-work-buffer
           (erase-buffer))
 
         ;; Set the major-mode of the font lock buffer unless this is the 
second half of
         ;; SEARCH/REPLACE block. In that case reuse the previous mode
-        (unless (equal marker aidermacs-diff-marker)
+        (unless (equal aidermacs--syntax-block-marker aidermacs-diff-marker)
           (let ((mode (aidermacs--guess-major-mode)))
             (with-current-buffer aidermacs--syntax-work-buffer
               (unless (eq mode major-mode)
diff --git a/aidermacs-backend-vterm.el b/aidermacs-backend-vterm.el
index 43fe2a4814..ec7e376adc 100644
--- a/aidermacs-backend-vterm.el
+++ b/aidermacs-backend-vterm.el
@@ -29,6 +29,14 @@
 (declare-function vterm-insert "vterm")
 
 
+(defvar-local aidermacs--vterm-active-timer nil
+  "Store the active timer for vterm output processing.")
+
+(defcustom aidermacs-vterm-multiline-newline-key "S-<return>"
+  "Key binding to enter a newline without sending in vterm."
+  :type 'string
+  :group 'aidermacs)
+
 (defun aidermacs--is-aidermacs-vterm-buffer-p (&optional buffer)
   "Check if BUFFER is an aidermacs vterm buffer.
 If BUFFER is nil, check the current buffer.
@@ -146,14 +154,6 @@ BUFFER-NAME is the name for the vterm buffer."
         (add-hook 'kill-buffer-hook #'aidermacs--vterm-cleanup nil t))))
   buffer-name)
 
-(defvar-local aidermacs--vterm-active-timer nil
-  "Store the active timer for vterm output processing.")
-
-(defcustom aidermacs-vterm-multiline-newline-key "S-<return>"
-  "Key binding to enter a newline without sending in vterm."
-  :type 'string
-  :group 'aidermacs)
-
 (defun aidermacs--send-command-vterm (buffer command)
   "Send command to the aidermacs vterm buffer.
 BUFFER is the target buffer to send to.  COMMAND is the text to send."
diff --git a/aidermacs.el b/aidermacs.el
index 7630797442..f3805ac928 100644
--- a/aidermacs.el
+++ b/aidermacs.el
@@ -886,19 +886,29 @@ These are exact filename matches (including the dot 
prefix)."
   :type '(repeat string)
   :group 'aidermacs)
 
-(defun aidermacs--should-enable-minor-mode-p (filename)
-  "Determine if `aidermacs-minor-mode' should be enabled for FILENAME.
-Returns t if the file matches any of the patterns in
-`aidermacs-auto-mode-files'."
-  (when filename
-    (let ((base-name (file-name-nondirectory filename)))
-      (member base-name aidermacs-auto-mode-files))))
-
-(add-hook #'find-file-hook
-          (lambda ()
-            (when (and buffer-file-name
-                       (aidermacs--should-enable-minor-mode-p 
buffer-file-name))
-              (aidermacs-minor-mode 1))))
+(defun aidermacs--maybe-enable-minor-mode ()
+  "Enable `aidermacs-minor-mode' if current buffer's file matches any
+of the patterns in `aidermacs-auto-mode-files'."
+  (when (and buffer-file-name
+             (when buffer-file-name
+               (let ((base-name (file-name-nondirectory buffer-file-name)))
+                 (member base-name aidermacs-auto-mode-files))))
+    (aidermacs-minor-mode 1)))
+
+;;;###autoload
+(defun aidermacs-setup-minor-mode ()
+  "Set up automatic enabling of `aidermacs-minor-mode' for specific files.
+This adds a hook to automatically enable the minor mode for files
+matching patterns in `aidermacs-auto-mode-files'.
+
+The minor mode provides convenient keybindings for working with
+prompt files and other Aider-related files:
+\\<aidermacs-minor-mode-map>
+\\[aidermacs-send-line-or-region] - Send current line/region line-by-line
+\\[aidermacs-send-block-or-region] - Send block/region as whole
+\\[aidermacs-switch-to-buffer] - Switch to Aidermacs buffer"
+  (interactive)
+  (add-hook 'find-file-hook #'aidermacs--maybe-enable-minor-mode))
 
 (provide 'aidermacs)
 ;;; aidermacs.el ends here

Reply via email to