70 lines
3.0 KiB
EmacsLisp
70 lines
3.0 KiB
EmacsLisp
;;; ai.el -*- lexical-binding: t; -*-
|
|
|
|
(setq gptel-model 'google/gemini-2.5-flash ;; Default model
|
|
gptel-backend
|
|
(gptel-make-openai "OpenRouter" ;Any name you want
|
|
:host "openrouter.ai"
|
|
:endpoint "/api/v1/chat/completions"
|
|
:stream t
|
|
:key "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" ;can be a function that returns the key
|
|
:models '(google/gemini-2.5-flash
|
|
google/gemini-2.5-pro
|
|
anthropic/claude-sonnet-4
|
|
anthropic/claude-sonnet-4.5
|
|
)))
|
|
|
|
;;; Claude Code Configuration
|
|
|
|
(use-package! claude-code
|
|
:config
|
|
;; Use vterm backend
|
|
(setq claude-code-terminal-backend 'vterm)
|
|
|
|
;; Enable global mode
|
|
(claude-code-mode 1)
|
|
|
|
;; Set key bindings prefix
|
|
(map! :leader
|
|
(:prefix ("C" . "claude-code")
|
|
:desc "Start Claude" "c" #'claude-code
|
|
:desc "Start in directory" "d" #'claude-code-start-in-directory
|
|
:desc "Continue conversation" "C" #'claude-code-continue
|
|
:desc "Resume session" "R" #'claude-code-resume
|
|
:desc "New instance" "i" #'claude-code-new-instance
|
|
:desc "Kill Claude" "k" #'claude-code-kill
|
|
:desc "Kill all instances" "K" #'claude-code-kill-all
|
|
:desc "Send command" "s" #'claude-code-send-command
|
|
:desc "Send command with context" "x" #'claude-code-send-command-with-context
|
|
:desc "Send region/buffer" "r" #'claude-code-send-region
|
|
:desc "Send buffer file" "o" #'claude-code-send-buffer-file
|
|
:desc "Fix error at point" "e" #'claude-code-fix-error-at-point
|
|
:desc "Toggle window" "t" #'claude-code-toggle
|
|
:desc "Switch to buffer" "b" #'claude-code-switch-to-buffer
|
|
:desc "Select buffer" "B" #'claude-code-select-buffer
|
|
:desc "Toggle read-only" "z" #'claude-code-toggle-read-only-mode
|
|
:desc "Cycle mode" "M" #'claude-code-cycle-mode
|
|
:desc "Transient menu" "m" #'claude-code-transient
|
|
:desc "Slash commands" "/" #'claude-code-slash-commands
|
|
:desc "Fork conversation" "f" #'claude-code-fork
|
|
:desc "Send return" "y" #'claude-code-send-return
|
|
:desc "Send escape" "n" #'claude-code-send-escape
|
|
:desc "Send 1" "1" #'claude-code-send-1
|
|
:desc "Send 2" "2" #'claude-code-send-2
|
|
:desc "Send 3" "3" #'claude-code-send-3))
|
|
|
|
;; Optional: Configure window display (side window on right)
|
|
(add-to-list 'display-buffer-alist
|
|
'("^\\*claude"
|
|
(display-buffer-in-side-window)
|
|
(side . right)
|
|
(window-width . 90)))
|
|
|
|
;; Optional: Enable auto-revert for files modified by Claude
|
|
(global-auto-revert-mode 1)
|
|
|
|
;; Optional: Increase vterm scrollback for long conversations
|
|
(add-hook 'claude-code-start-hook
|
|
(lambda ()
|
|
(when (eq claude-code-terminal-backend 'vterm)
|
|
(setq-local vterm-max-scrollback 100000)))))
|