Skip to content

Instantly share code, notes, and snippets.

@ryane
Created June 2, 2025 18:03
Show Gist options
  • Save ryane/c9337eb2f6c96acab837f21cb669ab06 to your computer and use it in GitHub Desktop.
Save ryane/c9337eb2f6c96acab837f21cb669ab06 to your computer and use it in GitHub Desktop.
gptel config fragment
(defun my/gptel-write-buffer ()
"Save buffer to disk when starting gptel"
(unless (buffer-file-name (current-buffer))
(let ((prefix (format-time-string "%Y-%m-%d-T%H%M" (current-time)))
(chat-dir "~/org/ai/gptel/"))
(unless (file-directory-p chat-dir)
(make-directory chat-dir :parents))
(write-file (expand-file-name (concat prefix "-" (buffer-name) ".md") chat-dir)))))
(add-hook 'gptel-mode-hook #'my/gptel-write-buffer)
(defun my/gptel-mode-auto ()
"Ensure that this file opens with `gptel-mode' enabled."
(save-excursion
(let ((enable-local-variables t)) ; Ensure we can modify local variables
(if (and (save-excursion
(goto-char (point-min))
(looking-at ".*-\\*-"))) ; If there's a -*- line
;; First remove any existing eval, then add the new one
(modify-file-local-variable-prop-line
'eval nil 'delete))
;; Always add our eval
(add-file-local-variable-prop-line
'eval '(and (fboundp 'gptel-mode) (gptel-mode 1))))))
(add-hook 'gptel-save-state-hook #'my/gptel-mode-auto)
(map! :leader
:prefix "l"
:desc "gptel context add" "a" #'gptel-context-add
:desc "gptel chat" "c" #'gptel
:desc "gptel context add file" "f" #'gptel-context-add-file
:desc "gptel menu" "m" #'gptel-menu
:desc "gptel mode" "M" #'gptel-mode
:desc "gptel quick" "q" #'gptel-quick
:desc "gptel rewrite" "r" #'gptel-rewrite
:desc "gptel send" "s" #'gptel-send
)
(after! which-key
(which-key-add-key-based-replacements "SPC l" "ai"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment