aboutsummaryrefslogtreecommitdiff
path: root/.config/emacs/lisp/evil-collection/modes/agent-shell/README.org
diff options
context:
space:
mode:
Diffstat (limited to '.config/emacs/lisp/evil-collection/modes/agent-shell/README.org')
-rw-r--r--.config/emacs/lisp/evil-collection/modes/agent-shell/README.org137
1 files changed, 137 insertions, 0 deletions
diff --git a/.config/emacs/lisp/evil-collection/modes/agent-shell/README.org b/.config/emacs/lisp/evil-collection/modes/agent-shell/README.org
new file mode 100644
index 0000000..a362a2f
--- /dev/null
+++ b/.config/emacs/lisp/evil-collection/modes/agent-shell/README.org
@@ -0,0 +1,137 @@
+* agent-shell
+
+ Evil bindings for [[https://github.com/xenodium/agent-shell][agent-shell]] -- a
+ comint-based chat REPL with permission prompts, a side viewport and a diff
+ buffer.
+
+** agent-shell-mode-map
+
+ Upstream's =n= / =p= top-level bindings are unset so they don't intercept
+ keystrokes in insert state; in insert they self-insert.
+
+*** Permission dispatch (normal state)
+
+ Only active when =evil-collection-agent-shell-want-permission-bindings= is
+ non-nil. Each key falls through to its default evil command unless a
+ pending permission button is visible.
+
+ | Command | Action | Evil |
+ |-------------------------------------------------------+------------------+------|
+ | =evil-collection-agent-shell-permission-view-diff= | view diff =v= | =v= |
+ | =evil-collection-agent-shell-permission-allow-once= | allow =y= | =y= |
+ | =evil-collection-agent-shell-permission-reject-once= | reject =C-c C-c= | =n= |
+ | =evil-collection-agent-shell-permission-allow-always= | always allow =!= | =!= |
+
+*** Navigation (normal state)
+
+ | Command | Original | Evil |
+ |----------------------------------+----------+-------------|
+ | =agent-shell-next-item= | =n= | =TAB= |
+ | =agent-shell-previous-item= | =p= | =<backtab>= |
+ | =agent-shell-cycle-session-mode= | n/a | =C-<tab>= |
+
+*** g-prefix (only when =evil-collection-want-g-bindings=)
+
+ | Command | Evil |
+ |----------------------------------+------|
+ | =agent-shell-cycle-session-mode= | =gs= |
+ | =agent-shell-interrupt= | =gx= |
+ | =agent-shell-set-session-mode= | =gm= |
+ | =agent-shell-set-session-model= | =gv= |
+ | =agent-shell-other-buffer= | =go= |
+ | =agent-shell-yank-dwim= | =gp= |
+ | =agent-shell-reload= | =gr= |
+ | =agent-shell-restart= | =gR= |
+ | =agent-shell-fork= | =gF= |
+ | =agent-shell-copy-session-id= | =gy= |
+ | =agent-shell-prompt-compose= | =gc= |
+ | =agent-shell-queue-request= | =gq= |
+ | =agent-shell-open-transcript= | =gt= |
+
+** agent-shell-viewport-edit-mode-map
+
+ The viewport's compose buffer. Standard save/quit verbs become send/cancel.
+
+ | Command | Original | Evil |
+ |------------------------------------------+-----------+--------------------------------|
+ | =agent-shell-viewport-compose-send= | =C-c C-c= | =:w=, =:wq=, =ZZ=, =RET= remap |
+ | =agent-shell-viewport-compose-cancel= | =C-c C-k= | =:q=, =ZQ= |
+ | =agent-shell-viewport-previous-history= | n/a | =M-k= |
+ | =agent-shell-viewport-next-history= | n/a | =M-j= |
+ | =agent-shell-viewport-compose-peek-last= | n/a | =C-o= |
+
+ When =evil-collection-want-g-bindings= is non-nil:
+
+ | Command | Evil |
+ |------------------------------------------+------|
+ | =agent-shell-viewport-compose-help-menu= | =g?= |
+ | =agent-shell-cycle-session-mode= | =gs= |
+ | =agent-shell-viewport-set-session-mode= | =gm= |
+ | =agent-shell-viewport-set-session-model= | =gv= |
+ | =agent-shell-other-buffer= | =go= |
+ | =agent-shell-yank-dwim= | =gp= |
+ | =agent-shell-viewport-search-history= | =g/= |
+ | =agent-shell-viewport-copy-session-id= | =gy= |
+ | =agent-shell-viewport-open-transcript= | =gt= |
+
+** agent-shell-viewport-view-mode-map
+
+ Read-only viewport. =RET= / =:w= / =ZZ= all interrupt the agent; =:q= /
+ =ZQ= bury.
+
+ | Command | Original | Evil |
+ |--------------------------------------+-----------+-------------------------|
+ | =agent-shell-viewport-interrupt= | =C-c C-c= | =RET=, =:w=, =ZZ= remap |
+ | =bury-buffer= | =q= | =q=, =ZQ=, =:q= remap |
+ | =agent-shell-viewport-next-item= | =n= | =TAB=, =gj= |
+ | =agent-shell-viewport-previous-item= | =p= | =<backtab>=, =gk= |
+ | =agent-shell-viewport-next-page= | =f= | =C-j= |
+ | =agent-shell-viewport-previous-page= | =b= | =C-k= |
+
+ When =evil-collection-want-g-bindings= is non-nil:
+
+ | Command | Evil |
+ |-------------------------------------------+--------------|
+ | =agent-shell-viewport-reply-1..9= | =g1= .. =g9= |
+ | =agent-shell-viewport-cycle-session-mode= | =gs= |
+ | =agent-shell-viewport-set-session-model= | =gv= |
+ | =agent-shell-other-buffer= | =go= |
+ | =agent-shell-viewport-set-session-mode= | =gm= |
+ | =agent-shell-viewport-help-menu= | =g?= |
+ | =agent-shell-viewport-reply= | =gr= |
+ | =agent-shell-viewport-reply-yes= | =gy= |
+ | =agent-shell-viewport-reply-more= | =gM= |
+ | =agent-shell-viewport-reply-again= | =ga= |
+ | =agent-shell-viewport-reply-continue= | =gc= |
+ | =agent-shell-viewport-edit= | =ge= |
+ | =agent-shell-viewport-fork= | =gF= |
+ | =agent-shell-viewport-copy-session-id= | =gY= |
+ | =agent-shell-viewport-open-transcript= | =gt= |
+ | =agent-shell-viewport-refresh= | =gz= |
+
+** agent-shell-diff-mode-map
+
+ | Command | Original | Evil (=g-bindings=) | Evil (no =g-bindings=) |
+ |-------------------------------+----------+---------------------+------------------------|
+ | =agent-shell-diff-open-file= | =f= | =gf= | =f= |
+ | =agent-shell-diff-accept-all= | =y= | =gy= | =y= |
+ | =agent-shell-diff-reject-all= | =n= | =gn= | =n= |
+ | =kill-current-buffer= | n/a | =q= | =q= |
+
+** New commands
+
+ | Command | Purpose |
+ |-------------------------------------------------------+----------------------------------------------------|
+ | =evil-collection-agent-shell-permission-allow-once= | Press =y= on the latest pending permission button. |
+ | =evil-collection-agent-shell-permission-reject-once= | Send =C-c C-c= to it. |
+ | =evil-collection-agent-shell-permission-allow-always= | Press =!=. |
+ | =evil-collection-agent-shell-permission-view-diff= | Press =v=. |
+
+ Each only fires when a pending permission button is visible -- otherwise the
+ keymap entry resolves to nil via a =:filter= and evil's default takes over.
+
+** Customization
+
+ | Variable | Default | Purpose |
+ |--------------------------------------------------------+---------+-------------------------------------------------------|
+ | =evil-collection-agent-shell-want-permission-bindings= | =t= | Bind =y= / =n= / =!= / =v= for the dispatchers above. |