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