diff --git a/.config/emacs/config.el b/.config/emacs/config.el index 8e574c6..d3a8106 100644 --- a/.config/emacs/config.el +++ b/.config/emacs/config.el @@ -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 "") '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) diff --git a/.config/emacs/config.org b/.config/emacs/config.org index a92036d..5b3d32b 100644 --- a/.config/emacs/config.org +++ b/.config/emacs/config.org @@ -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 "") '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