Adding claude code and rules for splits in vterm/claude

This commit is contained in:
Derek Taylor
2026-04-21 12:53:35 -05:00
parent b2a4a744c0
commit 9e81f4a3bf
2 changed files with 69 additions and 24 deletions

View File

@@ -21,6 +21,20 @@
;; Optional: Start the Emacs server if not already running
(unless (server-running-p) (server-start)))
(setq claude-code-terminal-backend 'vterm)
(setq claude-code-optimize-window-resize t)
(setq claude-code-no-delete-other-windows t)
(setq claude-code-toggle-auto-select t)
(with-eval-after-load 'claude-code
(add-to-list 'display-buffer-alist
'((lambda (buffer-or-name _)
(string-prefix-p "*claude:" (buffer-name (get-buffer buffer-or-name))))
(display-buffer-reuse-window display-buffer-in-side-window)
(side . right)
(slot . 1) ;; Optional: keeps it separate from vterm if both are open
(window-width . 0.4))))
(use-package company
:defer 2
:diminish
@@ -301,6 +315,13 @@
"b S" '(save-some-buffers :wk "Save multiple buffers")
"b w" '(bookmark-save :wk "Save current bookmarks to bookmark file"))
(dt/leader-keys
"c" '(:ignore t :wk "Claude")
"c c" '(claude-code :wk "Start claude in a vterm")
"c k" '(claude-code-kill :wk "Kill claude process and its window")
"c K" '(claude-code-kill-all :wk "Kill all claude processes across all directories")
"c t" '(claude-code-transient :wk "Claude command menu"))
(dt/leader-keys
"d" '(:ignore t :wk "Dired")
"d d" '(dired :wk "Open dired")
@@ -762,6 +783,8 @@
(setq shell-file-name "/bin/sh"
vterm-max-scrollback 5000))
(add-hook 'vterm-mode-hook (lambda () (display-line-numbers-mode -1)))
(use-package vterm-toggle
:ensure t
:after vterm
@@ -770,20 +793,19 @@
;; kills the program as it would in most standard terminal programs.
(evil-define-key 'normal vterm-mode-map (kbd "<escape>") 'vterm--self-insert)
(setq vterm-toggle-fullscreen-p nil)
(setq vterm-toggle-scope 'project)
(setq vterm-toggle-scope 'project))
(with-eval-after-load 'vterm
(add-to-list 'display-buffer-alist
'((lambda (buffer-or-name _)
(let ((buffer (get-buffer buffer-or-name)))
(with-current-buffer buffer
(or (equal major-mode 'vterm-mode)
(string-prefix-p vterm-buffer-name (buffer-name buffer))))))
(display-buffer-reuse-window display-buffer-at-bottom)
;;(display-buffer-reuse-window display-buffer-in-direction)
;;display-buffer-in-direction/direction/dedicated is added in emacs27
;;(direction . bottom)
;;(dedicated . t) ;dedicated is supported in emacs27
(reusable-frames . visible)
(window-height . 0.4))))
(let ((buffer (get-buffer buffer-or-name)))
(with-current-buffer buffer
(or (equal major-mode 'vterm-mode)
(string-prefix-p vterm-buffer-name (buffer-name buffer))))))
(display-buffer-reuse-window display-buffer-in-side-window)
(side . right)
(reusable-frames . visible)
(window-width . 0.4))))
(use-package sudo-edit)

View File

@@ -108,6 +108,20 @@ By default, Emacs creates automatic backups of files in their original directori
;; Optional: Start the Emacs server if not already running
(unless (server-running-p) (server-start)))
(setq claude-code-terminal-backend 'vterm)
(setq claude-code-optimize-window-resize t)
(setq claude-code-no-delete-other-windows t)
(setq claude-code-toggle-auto-select t)
(with-eval-after-load 'claude-code
(add-to-list 'display-buffer-alist
'((lambda (buffer-or-name _)
(string-prefix-p "*claude:" (buffer-name (get-buffer buffer-or-name))))
(display-buffer-reuse-window display-buffer-in-side-window)
(side . right)
(slot . 1) ;; Optional: keeps it separate from vterm if both are open
(window-width . 0.4))))
#+end_src
* COMPANY
@@ -471,6 +485,13 @@ mouse wheel for zooming in/out.
"b S" '(save-some-buffers :wk "Save multiple buffers")
"b w" '(bookmark-save :wk "Save current bookmarks to bookmark file"))
(dt/leader-keys
"c" '(:ignore t :wk "Claude")
"c c" '(claude-code :wk "Start claude in a vterm")
"c k" '(claude-code-kill :wk "Kill claude process and its window")
"c K" '(claude-code-kill-all :wk "Kill all claude processes across all directories")
"c t" '(claude-code-transient :wk "Claude command menu"))
(dt/leader-keys
"d" '(:ignore t :wk "Dired")
"d d" '(dired :wk "Open dired")
@@ -1088,6 +1109,9 @@ Vterm is a terminal emulator within Emacs. The 'shell-file-name' setting sets t
:config
(setq shell-file-name "/bin/sh"
vterm-max-scrollback 5000))
(add-hook 'vterm-mode-hook (lambda () (display-line-numbers-mode -1)))
#+end_src
** Vterm-Toggle
@@ -1102,20 +1126,19 @@ Vterm is a terminal emulator within Emacs. The 'shell-file-name' setting sets t
;; kills the program as it would in most standard terminal programs.
(evil-define-key 'normal vterm-mode-map (kbd "<escape>") 'vterm--self-insert)
(setq vterm-toggle-fullscreen-p nil)
(setq vterm-toggle-scope 'project)
(setq vterm-toggle-scope 'project))
(with-eval-after-load 'vterm
(add-to-list 'display-buffer-alist
'((lambda (buffer-or-name _)
(let ((buffer (get-buffer buffer-or-name)))
(with-current-buffer buffer
(or (equal major-mode 'vterm-mode)
(string-prefix-p vterm-buffer-name (buffer-name buffer))))))
(display-buffer-reuse-window display-buffer-at-bottom)
;;(display-buffer-reuse-window display-buffer-in-direction)
;;display-buffer-in-direction/direction/dedicated is added in emacs27
;;(direction . bottom)
;;(dedicated . t) ;dedicated is supported in emacs27
(reusable-frames . visible)
(window-height . 0.4))))
(let ((buffer (get-buffer buffer-or-name)))
(with-current-buffer buffer
(or (equal major-mode 'vterm-mode)
(string-prefix-p vterm-buffer-name (buffer-name buffer))))))
(display-buffer-reuse-window display-buffer-in-side-window)
(side . right)
(reusable-frames . visible)
(window-width . 0.4))))
#+end_src