el: add rename-session, dired commands

- C-c C-r: rename session via rename-file (wstat)
- C-c C-d: open ollie mount in dired
- Update README with new keybindings
This commit is contained in:
Levi Neely 2026-04-13 14:26:01 +02:00
parent 732bd15f00
commit acef9da787
2 changed files with 23 additions and 0 deletions

View File

@ -59,8 +59,10 @@ In the `*ollie*` buffer:
| `C-c C-q` | Open input window and compose a queued prompt |
| `C-c C-c` | Interrupt the running turn |
| `C-c C-k` | Kill the current session |
| `C-c C-r` | Rename the current session |
| `C-c C-n` / `n` | New session |
| `C-c C-a` | Attach to a different session |
| `C-c C-d` | Open the ollie mount in Dired |
| `g` | Force-refresh the chat log |
In the `*ollie-input*` window:

View File

@ -210,6 +210,20 @@ Returns the new session ID."
(insert "Press 'n' or C-c C-n to start a new session.\n"))))
(message "Session killed")))
(defun ollie-rename-session (new-name)
"Rename the current ollie session to NEW-NAME."
(interactive "sNew session name: ")
(unless ollie--session-id (user-error "No active session"))
(when (string-empty-p (string-trim new-name))
(user-error "Empty name"))
(let ((old-dir (expand-file-name ollie--session-id (ollie--sessions-dir)))
(new-dir (expand-file-name new-name (ollie--sessions-dir))))
(rename-file old-dir new-dir)
(setq ollie--session-id new-name)
(ollie--persist-session new-name)
(force-mode-line-update)
(message "Renamed session to %s" new-name)))
;;;; ──────────────── State ────────────────
(defun ollie--state ()
@ -425,8 +439,10 @@ QUEUED non-nil means the prompt will be enqueued, not submitted immediately."
(define-key m (kbd "C-c C-q") #'ollie-queue-input)
(define-key m (kbd "C-c C-c") #'ollie-stop)
(define-key m (kbd "C-c C-k") #'ollie-kill-session)
(define-key m (kbd "C-c C-r") #'ollie-rename-session)
(define-key m (kbd "C-c C-n") #'ollie-new-and-open)
(define-key m (kbd "C-c C-a") #'ollie-attach-and-open)
(define-key m (kbd "C-c C-d") #'ollie-dired)
(define-key m (kbd "n") #'ollie-new-and-open)
(define-key m (kbd "g") #'ollie-refresh)
m)
@ -448,6 +464,11 @@ QUEUED non-nil means the prompt will be enqueued, not submitted immediately."
(setq ollie--chat-size -1)
(ollie--refresh))
(defun ollie-dired ()
"Open the ollie-9p mount point in Dired."
(interactive)
(dired ollie-mount-directory))
(define-derived-mode ollie-mode special-mode "Ollie"
"Major mode for the ollie chat interface.