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:
parent
732bd15f00
commit
acef9da787
|
|
@ -59,8 +59,10 @@ In the `*ollie*` buffer:
|
||||||
| `C-c C-q` | Open input window and compose a queued prompt |
|
| `C-c C-q` | Open input window and compose a queued prompt |
|
||||||
| `C-c C-c` | Interrupt the running turn |
|
| `C-c C-c` | Interrupt the running turn |
|
||||||
| `C-c C-k` | Kill the current session |
|
| `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-n` / `n` | New session |
|
||||||
| `C-c C-a` | Attach to a different 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 |
|
| `g` | Force-refresh the chat log |
|
||||||
|
|
||||||
In the `*ollie-input*` window:
|
In the `*ollie-input*` window:
|
||||||
|
|
|
||||||
21
ollie.el
21
ollie.el
|
|
@ -210,6 +210,20 @@ Returns the new session ID."
|
||||||
(insert "Press 'n' or C-c C-n to start a new session.\n"))))
|
(insert "Press 'n' or C-c C-n to start a new session.\n"))))
|
||||||
(message "Session killed")))
|
(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 ────────────────
|
;;;; ──────────────── State ────────────────
|
||||||
|
|
||||||
(defun ollie--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-q") #'ollie-queue-input)
|
||||||
(define-key m (kbd "C-c C-c") #'ollie-stop)
|
(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-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-n") #'ollie-new-and-open)
|
||||||
(define-key m (kbd "C-c C-a") #'ollie-attach-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 "n") #'ollie-new-and-open)
|
||||||
(define-key m (kbd "g") #'ollie-refresh)
|
(define-key m (kbd "g") #'ollie-refresh)
|
||||||
m)
|
m)
|
||||||
|
|
@ -448,6 +464,11 @@ QUEUED non-nil means the prompt will be enqueued, not submitted immediately."
|
||||||
(setq ollie--chat-size -1)
|
(setq ollie--chat-size -1)
|
||||||
(ollie--refresh))
|
(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"
|
(define-derived-mode ollie-mode special-mode "Ollie"
|
||||||
"Major mode for the ollie chat interface.
|
"Major mode for the ollie chat interface.
|
||||||
|
|
||||||
|
|
|
||||||
Reference in New Issue