branch: elpa/aidermacs
commit d775ffafaa138fa9d25abc27be1af5225362c7bf
Author: Mingde (Matthew) Zeng <[email protected]>
Commit: Mingde (Matthew) Zeng <[email protected]>
Add logo
---
README.org => README.md | 208 +++++++++++++++++++++++-------------------------
aidermacs.png | Bin 0 -> 116788 bytes
2 files changed, 101 insertions(+), 107 deletions(-)
diff --git a/README.org b/README.md
similarity index 52%
rename from README.org
rename to README.md
index 40bc2403d6..57ffbf0358 100644
--- a/README.org
+++ b/README.md
@@ -1,9 +1,12 @@
-#+TITLE: Aidermacs: AI Pair Programming in Emacs
-#+OPTIONS: toc:2
+<p align="center">
+ <img style='height: auto; width: 40%; object-fit: contain'
src="./aidermacs.png">
+</p>
-* Introduction
+# Aidermacs: AI Pair Programming in Emacs
-Miss using [[https://cursor.sh][Cursor]] but prefer working in Emacs?
Aidermacs brings Cursor-like AI-powered development to your Emacs workflow by
integrating [[https://github.com/paul-gauthier/aider][Aider]], one of the most
powerful open-source AI pair programming tools available. As a community-driven
project, Aidermacs prioritizes the needs and preferences of Emacs users. It
provides the same powerful features you'd find in Cursor:
+## Introduction
+
+Miss using [Cursor](https://cursor.sh) but prefer working in Emacs? Aidermacs
brings Cursor-like AI-powered development to your Emacs workflow by integrating
[Aider](https://github.com/paul-gauthier/aider), one of the most powerful
open-source AI pair programming tools available. As a community-driven project,
Aidermacs prioritizes the needs and preferences of Emacs users. It provides the
same powerful features you'd find in Cursor:
- Top performance on the SWE Bench, solving real GitHub issues in major open
source projects
- Seamless Git integration with automatic, sensible commit messages
@@ -12,24 +15,24 @@ Miss using [[https://cursor.sh][Cursor]] but prefer working
in Emacs? Aidermacs
- Broad language support including Python, JavaScript, TypeScript, PHP, HTML,
CSS, and more
- Compatibility with leading AI models like Claude 3.5 Sonnet, DeepSeek, and
GPT-4o
-* Community-Driven Development
+### Community-Driven Development
-Aidermacs thrives on community involvement. We believe that the best software
is built collaboratively, with input from users and contributors. We encourage
you to:
+Aidermacs thrives on community involvement. We believe that the best software
is built collaboratively, with input from users and contributors. We encourage
you to:
-- Contribute Code: Submit pull requests with bug fixes, new features, or
improvements to existing functionality.
-- Report Issues: Let us know about any bugs, unexpected behavior, or feature
requests through GitHub Issues.
-- Share Ideas: Participate in discussions and propose new ideas for making
Aidermacs even better.
+- Contribute Code: Submit pull requests with bug fixes, new features, or
improvements to existing functionality.
+- Report Issues: Let us know about any bugs, unexpected behavior, or feature
requests through GitHub Issues.
+- Share Ideas: Participate in discussions and propose new ideas for making
Aidermacs even better.
- Improve Documentation: Help us make the documentation clearer, more
comprehensive, and easier to use.
Your contributions are essential to making Aidermacs the best AI pair
programming tool for Emacs!
-** Why Aidermacs over aider.el?
+### Why Aidermacs over aider.el?
-Aidermacs is designed to provide a more Emacs-native experience while still
integrating with [[https://github.com/paul-gauthier/aider][Aider]]. It began as
a fork of [[https://github.com/tninja/aider.el][aider.el]], but has since
diverged significantly to prioritize Emacs workflow integration.
+Aidermacs is designed to provide a more Emacs-native experience while still
integrating with [Aider](https://github.com/paul-gauthier/aider). It began as a
fork of [aider.el](https://github.com/tninja/aider.el), but has since diverged
significantly to prioritize Emacs workflow integration.
-While =aider.el= strictly mirrors Aider's CLI behavior, =Aidermacs= is built
around Emacs-specific features and paradigms. This design philosophy allows you
to harness Aider's powerful capabilities through a natural, Emacs-native coding
experience.
+While `aider.el` strictly mirrors Aider's CLI behavior, `Aidermacs` is built
around Emacs-specific features and paradigms. This design philosophy allows you
to harness Aider's powerful capabilities through a natural, Emacs-native coding
experience.
-With =Aidermacs=, you get:
+With `Aidermacs`, you get:
1. Intelligent Model Selection
- Automatic discovery of available models from multiple providers
@@ -39,7 +42,7 @@ With =Aidermacs=, you get:
- Support for both popular pre-configured models and dynamically discovered
ones
2. Flexible Terminal Backend Support
- - =Aidermacs= supports multiple terminal backends (comint and vterm) for
better compatibility and performance
+ - `Aidermacs` supports multiple terminal backends (comint and vterm) for
better compatibility and performance
- Easy configuration to choose your preferred terminal emulation
- Extensible architecture for adding new backends
@@ -48,174 +51,173 @@ With =Aidermacs=, you get:
- Ensures clarity and readability without additional configuration.
4. Better Support for Multiline Input
- - =aider= is primarily designed as a command-line program, where multiline
input is restricted by terminal limitations.
+ - `aider` is primarily designed as a command-line program, where multiline
input is restricted by terminal limitations.
- Terminal-based tools require special syntax or manual formatting to
handle multiline input, which can be cumbersome and unintuitive.
- - =Aidermacs= eliminates these restrictions by handling multiline prompts
natively within Emacs, allowing you to compose complex AI requests just like
any other text input.
- - Whether you're pasting blocks of code or refining AI-generated responses,
multiline interactions in =Aidermacs= feel natural and seamless.
+ - `Aidermacs` eliminates these restrictions by handling multiline prompts
natively within Emacs, allowing you to compose complex AI requests just like
any other text input.
+ - Whether you're pasting blocks of code or refining AI-generated responses,
multiline interactions in `Aidermacs` feel natural and seamless.
5. Enhanced File Management from Emacs
- - List files currently in chat with =M-x aidermacs-list-added-files=
- - Drop specific files from chat with =M-x aidermacs-drop-file=
- - View output history with =M-x aidermacs-show-output-history=
+ - List files currently in chat with `M-x aidermacs-list-added-files`
+ - Drop specific files from chat with `M-x aidermacs-drop-file`
+ - View output history with `M-x aidermacs-show-output-history`
- and more
6. Greater Configurability
- - =Aidermacs= offers more customization options to tailor the experience to
your preferences.
+ - `Aidermacs` offers more customization options to tailor the experience to
your preferences.
7. Streamlined Transient Menu Selection
- The transient menus have been completely redesigned to encompass
functionality and ergonomics, prioritizing user experience.
8. Community-Driven Development
- - =Aidermacs= is actively developed and maintained by the community,
incorporating user feedback and contributions.
+ - `Aidermacs` is actively developed and maintained by the community,
incorporating user feedback and contributions.
- We prioritize features and improvements that directly benefit Emacs
users, ensuring a tool that evolves with your needs.
-
... and more to come 🚀
-* Installation
+## Installation
-*** Requirements
+### Requirements
- Emacs ≥ 26.1
-- [[https://aider.chat/docs/install.html][Aider]]
-- [[https://github.com/magit/transient][Transient]]
+- [Aider](https://aider.chat/docs/install.html)
+- [Transient](https://github.com/magit/transient)
-*** Sample Config With Straight
-#+BEGIN_SRC emacs-lisp
+### Sample Config With Straight
+```emacs-lisp
(use-package aidermacs
:straight (:host github :repo "MatthewZMD/aidermacs" :files ("*.el"))
:config
(setq aidermacs-args '("--model" "anthropic/claude-3-5-sonnet-20241022"))
(setenv "ANTHROPIC_API_KEY" anthropic-api-key)
(global-set-key (kbd "C-c a") 'aidermacs-transient-menu))
-#+END_SRC
+```
-*** Sample Config With Doom Emacs
-#+BEGIN_SRC emacs-lisp
+### Sample Config With Doom Emacs
+```emacs-lisp
(package! aidermacs :recipe (:host github :repo "MatthewZMD/aidermacs" :files
("*.el")))
-#+END_SRC
+```
-* Configuration
+## Configuration
-** Terminal Backend Selection
+### Terminal Backend Selection
-Choose your preferred terminal backend by setting =Aidermacs-backend=:
+Choose your preferred terminal backend by setting `Aidermacs-backend`:
-=vterm= provides better terminal compatibility and bracketed paste support,
while =comint= is a simpler, built-in option.
+`vterm` provides better terminal compatibility and bracketed paste support,
while `comint` is a simpler, built-in option.
-#+BEGIN_SRC emacs-lisp
+```emacs-lisp
;; Use vterm backend (default is comint)
(setq aidermacs-backend 'vterm)
-#+END_SRC
+```
Available backends:
-- =comint= (default): Uses Emacs' built-in terminal emulation
-- =vterm=: Leverages vterm for better terminal compatibility
+- `comint` (default): Uses Emacs' built-in terminal emulation
+- `vterm`: Leverages vterm for better terminal compatibility
-** Re-Enable Auto-Commits
+### Re-Enable Auto-Commits
-Aider by default automatically commits changes made by the AI. We find this
behavior /very/ intrusive, so we disabled it for you. You can re-enable
auto-commits by setting =aidermacs-auto-commits= to =t=:
+Aider by default automatically commits changes made by the AI. We find this
behavior /very/ intrusive, so we disabled it for you. You can re-enable
auto-commits by setting `aidermacs-auto-commits` to `t`:
-#+BEGIN_SRC emacs-lisp
+```emacs-lisp
;; Enable auto-commits
(setq aidermacs-auto-commits t)
-#+END_SRC
+```
With auto-commits disabled, you'll need to manually commit changes using your
preferred Git workflow.
-** Multiline Input Configuration
+### Multiline Input Configuration
When using the comint backend, you can customize the key binding for multiline
input:
-#+BEGIN_SRC emacs-lisp
+```emacs-lisp
;; Change multiline input key (default is S-<return>)
(setq aidermacs-comint-multiline-newline-key "C-<return>")
-#+END_SRC
+```
-This key allows you to enter multiple lines without sending the command to
Aider. Press =RET= normally to send the command.
+This key allows you to enter multiple lines without sending the command to
Aider. Press `RET` normally to send the command.
-* Usage
+## Usage
This section provides a step-by-step guide on how to use Aidermacs for
AI-assisted pair programming in Emacs.
-** Getting Started
+### Getting Started
The main interface to Aidermacs is through its transient menu system (similar
to Magit). Access it with:
-#+BEGIN_SRC
+```
M-x aidermacs-transient-menu
-#+END_SRC
+```
Or bind it to a key in your config:
-#+BEGIN_SRC emacs-lisp
+```emacs-lisp
(global-set-key (kbd "C-c a") 'aidermacs-transient-menu)
-#+END_SRC
+```
-** Core Workflow
+### Core Workflow
-*** 1. Start a Session
+#### 1. Start a Session
From the transient menu:
-- =a= Start/open session (auto-detects project root)
-- =.= Start in current directory (good for monorepos)
-- =^= Toggle "Start in New Frame" option
-- =o= Change AI model
+- `a` Start/open session (auto-detects project root)
+- `.` Start in current directory (good for monorepos)
+- `^` Toggle "Start in New Frame" option
+- `o` Change AI model
-The session buffer will be named =*aidermacs:your-repo-name*= where you can
interact with the AI.
+The session buffer will be named `*aidermacs:your-repo-name*` where you can
interact with the AI.
-*** 2. Quick Actions
+#### 2. Quick Actions
Most common operations are available directly:
-- =f= Add current file to chat
-- =c= Request code changes
-- =r= Refactor code at point/region
-- =d= Drop current file from chat
-- =g= Accept AI's proposal ("go ahead")
+- `f` Add current file to chat
+- `c` Request code changes
+- `r` Refactor code at point/region
+- `d` Drop current file from chat
+- `g` Accept AI's proposal ("go ahead")
-*** 3. Specialized Commands
+#### 3. Specialized Commands
Access more specific commands through submenus:
-**** File Commands (=F=)
-- Add files: current (=f=), read-only (=r=), window (=w=), directory (=d=),
marked in dired (=m=)
-- Drop files: specific (=j=), current (=k=)
-- List files in chat (=l=)
+##### File Commands (`F`)
+- Add files: current (`f`), read-only (`r`), window (`w`), directory (`d`),
marked in dired (`m`)
+- Drop files: specific (`j`), current (`k`)
+- List files in chat (`l`)
-**** Code Commands (=C=)
-- Code changes (=c=)
-- Refactoring (=r=)
-- Implement TODOs (=i=)
-- Testing: write (=t=), fix (=T=)
-- Debug exceptions (=x=)
-- Undo changes (=u=)
+##### Code Commands (`C`)
+- Code changes (`c`)
+- Refactoring (`r`)
+- Implement TODOs (`i`)
+- Testing: write (`t`), fix (`T`)
+- Debug exceptions (`x`)
+- Undo changes (`u`)
-**** Understanding Code
-- =m= Show last commit
-- =q= Ask questions
-- =e= Explain code at point/region
-- =p= Explain symbol under point
+##### Understanding Code
+- `m` Show last commit
+- `q` Ask questions
+- `e` Explain code at point/region
+- `p` Explain symbol under point
-**** Other Features
-- =H= View session history
-- =L= Copy last AI output
-- =l= Clear buffer
-- =h= Get help
+##### Other Features
+- `H` View session history
+- `L` Copy last AI output
+- `l` Clear buffer
+- `h` Get help
-** Working with Code Blocks
+### Working with Code Blocks
-When editing =.aider.prompt.org= or other files, these keybindings are
available:
+When editing `.aider.prompt.org` or other files, these keybindings are
available:
-- =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
+- `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
+### Prompt Files
-The =.aider.prompt.org= file (created with =M-x aidermacs-open-prompt-file=)
is useful for:
+The `.aider.prompt.org` file (created with `M-x aidermacs-open-prompt-file`)
is 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.
-** Dynamic Model Selection
+### Dynamic Model Selection
Aidermacs provides intelligent model selection that automatically detects and
integrates with multiple AI providers:
@@ -226,7 +228,7 @@ Aidermacs provides intelligent model selection that
automatically detects and in
- Provides model compatibility checking
To change models:
-1. Use =M-x aidermacs-change-model= or press =o= in the transient menu
+1. Use `M-x aidermacs-change-model` or press `o` in the transient menu
2. Select from either:
- Popular pre-configured models (fast)
- Dynamically fetched models from all supported providers (comprehensive)
@@ -235,11 +237,3 @@ The system will automatically filter models to only show
ones that are:
- Supported by your current Aider version
- Available through your configured API keys
- Compatible with your current workflow
-
-** Tips
-
-1. Start with Core Actions to begin a session
-2. Use Quick Actions for common tasks
-3. Explore specialized commands through submenus for more specific needs
-4. The transient interface shows all available commands - no need to memorize!
-5. Use =C-g= to cancel any transient menu operation
diff --git a/aidermacs.png b/aidermacs.png
new file mode 100644
index 0000000000..c2bf0dd66f
Binary files /dev/null and b/aidermacs.png differ