[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/gptel 95a5716aa2: gptel: Check derived modes instead of ma
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/gptel 95a5716aa2: gptel: Check derived modes instead of major-mode |
Date: |
Wed, 26 Jun 2024 00:59:46 -0400 (EDT) |
branch: elpa/gptel
commit 95a5716aa250d6321b17691abb035aa8acefbfbb
Author: Karthik Chikmagalur <karthikchikmagalur@gmail.com>
Commit: Karthik Chikmagalur <karthikchikmagalur@gmail.com>
gptel: Check derived modes instead of major-mode
* gptel.el (gptel--convert-org, gptel--save-state,
gptel--restore-state): Check for modes derived from Org/Markdown
instead of checking for org-mode and markdown-mode specifically.
This is to adapt gptel-mode and md -> org conversion in major-modes
that are derived from Org.
* gptel-curl.el (gptel-curl-get-response): Ditto.
---
gptel-curl.el | 6 ++---
gptel.el | 87 ++++++++++++++++++++++++++++++-----------------------------
2 files changed, 46 insertions(+), 47 deletions(-)
diff --git a/gptel-curl.el b/gptel-curl.el
index 7b7d790821..2d4c8ee969 100644
--- a/gptel-curl.el
+++ b/gptel-curl.el
@@ -135,10 +135,8 @@ the response is inserted into the current buffer after
point."
(if stream
#'gptel-curl--stream-insert-response
#'gptel--insert-response))
- :transformer (when (eq (buffer-local-value
- 'major-mode
- (plist-get info :buffer))
- 'org-mode)
+ :transformer (when (with-current-buffer (plist-get
info :buffer)
+ (derived-mode-p 'org-mode))
(gptel--stream-convert-markdown->org)))
info))
(if stream
diff --git a/gptel.el b/gptel.el
index a83d2a0b73..10a79f92ff 100644
--- a/gptel.el
+++ b/gptel.el
@@ -727,27 +727,27 @@ Valid JSON unless NO-JSON is t."
(defun gptel--restore-state ()
"Restore gptel state when turning on `gptel-mode'."
(when (buffer-file-name)
- (pcase major-mode
- ('org-mode
- (require 'gptel-org)
- (gptel-org--restore-state))
- (_ (when gptel--bounds
- (mapc (pcase-lambda (`(,beg . ,end))
- (put-text-property beg end 'gptel 'response))
- gptel--bounds)
- (message "gptel chat restored."))
- (when gptel--backend-name
- (if-let ((backend (alist-get
- gptel--backend-name gptel--known-backends
- nil nil #'equal)))
- (setq-local gptel-backend backend)
- (message
- (substitute-command-keys
- (concat
- "Could not activate gptel backend \"%s\"! "
- "Switch backends with \\[universal-argument] \\[gptel-send]"
- " before using gptel."))
- gptel--backend-name)))))))
+ (if (derived-mode-p 'org-mode)
+ (progn
+ (require 'gptel-org)
+ (gptel-org--restore-state))
+ (when gptel--bounds
+ (mapc (pcase-lambda (`(,beg . ,end))
+ (put-text-property beg end 'gptel 'response))
+ gptel--bounds)
+ (message "gptel chat restored."))
+ (when gptel--backend-name
+ (if-let ((backend (alist-get
+ gptel--backend-name gptel--known-backends
+ nil nil #'equal)))
+ (setq-local gptel-backend backend)
+ (message
+ (substitute-command-keys
+ (concat
+ "Could not activate gptel backend \"%s\"! "
+ "Switch backends with \\[universal-argument] \\[gptel-send]"
+ " before using gptel."))
+ gptel--backend-name))))))
(defun gptel--save-state ()
"Write the gptel state to the buffer.
@@ -755,24 +755,24 @@ Valid JSON unless NO-JSON is t."
This saves chat metadata when writing the buffer to disk. To
restore a chat session, turn on `gptel-mode' after opening the
file."
- (pcase major-mode
- ('org-mode
- (require 'gptel-org)
- (gptel-org--save-state))
- (_ (let ((print-escape-newlines t))
- (save-excursion
- (save-restriction
- (add-file-local-variable 'gptel-model gptel-model)
- (add-file-local-variable 'gptel--backend-name
- (gptel-backend-name gptel-backend))
- (unless (equal (default-value 'gptel-temperature)
gptel-temperature)
- (add-file-local-variable 'gptel-temperature gptel-temperature))
- (unless (string= (default-value 'gptel--system-message)
- gptel--system-message)
- (add-file-local-variable 'gptel--system-message
gptel--system-message))
- (when gptel-max-tokens
- (add-file-local-variable 'gptel-max-tokens gptel-max-tokens))
- (add-file-local-variable 'gptel--bounds
(gptel--get-buffer-bounds))))))))
+ (if (derived-mode-p 'org-mode)
+ (progn
+ (require 'gptel-org)
+ (gptel-org--save-state))
+ (let ((print-escape-newlines t))
+ (save-excursion
+ (save-restriction
+ (add-file-local-variable 'gptel-model gptel-model)
+ (add-file-local-variable 'gptel--backend-name
+ (gptel-backend-name gptel-backend))
+ (unless (equal (default-value 'gptel-temperature) gptel-temperature)
+ (add-file-local-variable 'gptel-temperature gptel-temperature))
+ (unless (string= (default-value 'gptel--system-message)
+ gptel--system-message)
+ (add-file-local-variable 'gptel--system-message
gptel--system-message))
+ (when gptel-max-tokens
+ (add-file-local-variable 'gptel-max-tokens gptel-max-tokens))
+ (add-file-local-variable 'gptel--bounds
(gptel--get-buffer-bounds)))))))
;; Minor mode and UI
@@ -790,7 +790,8 @@ file."
map)
(if gptel-mode
(progn
- (unless (memq major-mode '(org-mode markdown-mode text-mode))
+ (unless (or (derived-mode-p 'org-mode 'markdown-mode)
+ (eq major-mode 'text-mode))
(gptel-mode -1)
(user-error (format "`gptel-mode' is not supported in `%s'."
major-mode)))
(add-hook 'before-save-hook #'gptel--save-state nil t)
@@ -1194,9 +1195,9 @@ hook."
Currently only `org-mode' is handled.
BUFFER is the LLM interaction buffer."
- (pcase (buffer-local-value 'major-mode buffer)
- ('org-mode (gptel--convert-markdown->org content))
- (_ content)))
+ (if (with-current-buffer buffer (derived-mode-p 'org-mode))
+ (gptel--convert-markdown->org content)
+ content))
(defun gptel--url-get-response (info &optional callback)
"Fetch response to prompt in INFO from the LLM.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/gptel 95a5716aa2: gptel: Check derived modes instead of major-mode,
ELPA Syncer <=