Refine projectile OpenCode workflow

This commit is contained in:
Fabio Scotto di Santolo
2026-04-14 15:51:34 +02:00
parent 461dea9a5c
commit 031867dad9
3 changed files with 21 additions and 7 deletions

View File

@@ -90,10 +90,10 @@
(define-key fscotto/leader-map (kbd "p") 'projectile-command-map) (define-key fscotto/leader-map (kbd "p") 'projectile-command-map)
(with-eval-after-load 'projectile (with-eval-after-load 'projectile
(define-key projectile-command-map (kbd "v") #'fscotto/project-vterm) (define-key projectile-command-map (kbd "v") #'fscotto/project-multi-vterm)
(define-key projectile-command-map (kbd "V") #'fscotto/project-multi-vterm) (define-key projectile-command-map (kbd "V") nil)
(define-key projectile-command-map (kbd "x") #'fscotto/project-external-terminal) (define-key projectile-command-map (kbd "x") #'fscotto/project-external-terminal)
(define-key projectile-command-map (kbd "a") #'fscotto/project-opencode) (define-key projectile-command-map (kbd "a") #'fscotto/project-opencode-dwim)
(define-key projectile-command-map (kbd "A") #'fscotto/project-opencode-session) (define-key projectile-command-map (kbd "A") #'fscotto/project-opencode-session)
(define-key projectile-command-map (kbd "g") #'fscotto/project-magit-status)) (define-key projectile-command-map (kbd "g") #'fscotto/project-magit-status))

View File

@@ -124,6 +124,21 @@ Each entry is a cons cell of display string and session id."
"order by time_updated desc;") "order by time_updated desc;")
(replace-regexp-in-string "'" "''" session-directory)))))) (replace-regexp-in-string "'" "''" session-directory))))))
(defun fscotto/project-opencode-latest-session-id ()
"Return the latest saved OpenCode session id for the current project."
(car (last (car (fscotto/opencode-session-candidates (fscotto/project-root))))))
(defun fscotto/project-opencode-dwim ()
"Open the most useful OpenCode session for the current project.
Resume the latest saved session when available, otherwise create a new one."
(interactive)
(let ((session-id (fscotto/project-opencode-latest-session-id)))
(if session-id
(fscotto/launch-external-terminal (list "opencode" "--session" session-id)
(fscotto/project-root))
(fscotto/project-opencode))))
(defun fscotto/project-opencode-session () (defun fscotto/project-opencode-session ()
"Resume a saved OpenCode session for the current project." "Resume a saved OpenCode session for the current project."
(interactive) (interactive)

View File

@@ -143,11 +143,10 @@
;; Actions ;; Actions
"C-c p c" "Compile" "C-c p c" "Compile"
"C-c p t" "Test" "C-c p t" "Test"
"C-c p v" "Open vterm in project" "C-c p v" "Open multi-vterm in project"
"C-c p V" "Open multi-vterm in project"
"C-c p x" "Open external term" "C-c p x" "Open external term"
"C-c p a" "Open opencode" "C-c p a" "OpenCode (dwim)"
"C-c p A" "Resume opencode session" "C-c p A" "Choose OpenCode session"
"C-c p e" "Edit project config" "C-c p e" "Edit project config"
"C-c p g" "Project Git status" "C-c p g" "Project Git status"
"C-c p 4" "Other Window" "C-c p 4" "Other Window"