Untitled
Anonymous
plain_text
01/17/2026 7:59 PM
2.6 KB
123
Indexable
;;; -*- lexical-binding: t -*-
;; Turn on autorevert because Claude modifies and saves buffers. Make it a habit to save
;; before asking Claude anything, because it uses the file on disk as its source of truth.
;; (And you don't want to lose edits after it modifies and saves the files.)
(global-auto-revert-mode t)
;; Also revert non-file buffers like dired
(setq global-auto-revert-non-file-buffers t)
;; Be less verbose about auto-revert operations
(setq auto-revert-verbose nil)
;; Ensure Emacs integrates with system clipboard
(setq select-enable-clipboard t)
(setq select-enable-primary t)
;; Claude session management
(defun open-claude-buffer ()
"Start or switch to a Claude session in a vterm terminal.
If a *Claude* buffer already exists, switch to it.
Otherwise, prompt for directory and start claude in vterm."
(interactive)
(let ((claude-buffer "*Claude*"))
(if (get-buffer claude-buffer)
;; Buffer exists, switch to it
(switch-to-buffer claude-buffer)
;; Buffer doesn't exist, create new session
(let* ((choice (read-char-choice
"Start Claude in: (c)urrent directory or (d)efault ~/Documents/claude-temp/? "
'(?c ?d)))
(dir (if (eq choice ?c)
default-directory
(expand-file-name "~/Documents/claude-temp/"))))
;; Ensure the directory exists
(unless (file-directory-p dir)
(make-directory dir t))
;; Start vterm with claude in the chosen directory
(let ((default-directory dir)
(vterm-buffer-name claude-buffer))
(vterm)
;; Wait for terminal to be ready, then simulate typing "claude" + Enter
(run-at-time "0.3 sec" nil
(lambda ()
(when (get-buffer claude-buffer)
(with-current-buffer claude-buffer
(vterm-send-string "claude")
(vterm-send-return))))))))))
Editor is loading...
Leave a Comment