emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/gptel 5ebaf361f1 046/273: gptel: Handle the prompt prefix


From: ELPA Syncer
Subject: [nongnu] elpa/gptel 5ebaf361f1 046/273: gptel: Handle the prompt prefix string automatically
Date: Wed, 1 May 2024 10:01:35 -0400 (EDT)

branch: elpa/gptel
commit 5ebaf361f1d96801f913943ce6d57f703abfb594
Author: Karthik Chikmagalur <karthikchikmagalur@gmail.com>
Commit: Karthik Chikmagalur <karthikchikmagalur@gmail.com>

    gptel: Handle the prompt prefix string automatically
    
    * gptel.el (gptel-prompt-prefix-alist, gptel--playback, gptel,
    gptel--insert-response, gptel-prompt-string): The prompt prefix
    string is chosen automatically from the new variable
    `gptel-prompt-prefix-alist', which maps major modes to the prefix
    string to insert.
---
 gptel.el | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/gptel.el b/gptel.el
index 7feaca5c7f..0e58997a81 100644
--- a/gptel.el
+++ b/gptel.el
@@ -108,7 +108,18 @@ return the transformed string."
 (defvar gptel-default-mode (if (featurep 'markdown-mode)
                                'markdown-mode
                              'text-mode))
-(defvar gptel-prompt-string "### ")
+
+;; TODO: Handle `prog-mode' using the `comment-start' variable
+(defcustom gptel-prompt-prefix-alist
+  '((markdown-mode . "### ")
+    (org-mode . "*** ")
+    (text-mode . "### "))
+  "String inserted after the response from ChatGPT.
+
+This is an alist mapping major modes to the prefix strings. This
+is only inserted in dedicated gptel buffers."
+  :group 'gptel
+  :type '(alist :key-type symbol :value-type string))
 
 ;; Model and interaction parameters
 (defvar-local gptel--system-message
@@ -153,6 +164,9 @@ By default, \"openai.com\" is used as HOST and \"apikey\" 
as USER."
   "Ensure VAL is a number."
   (if (stringp val) (string-to-number val) val))
 
+(defun gptel-prompt-string ()
+  (or (alist-get major-mode gptel-prompt-prefix-alist) ""))
+
 (defvar-local gptel--old-header-line nil)
 (define-minor-mode gptel-mode
   "Minor mode for interacting with ChatGPT."
@@ -222,7 +236,7 @@ See `gptel--url-get-response' for details."
                 (insert content-str)
                 (pulse-momentary-highlight-region p (point)))
               (when gptel-mode
-                (insert "\n\n" gptel-prompt-string)
+                (insert "\n\n" (gptel-prompt-string))
                 (gptel--update-header-line " Ready" 'success))))
           (goto-char (- (point) 2)))
       (gptel--update-header-line
@@ -398,7 +412,7 @@ buffer created or switched to."
       (visual-line-mode 1))
      (t (funcall gptel-default-mode)))
     (unless gptel-mode (gptel-mode 1))
-    (if (bobp) (insert (or initial gptel-prompt-string)))
+    (if (bobp) (insert (or initial (gptel-prompt-string))))
     (pop-to-buffer (current-buffer))
     (goto-char (point-max))
     (skip-chars-backward "\t\r\n")
@@ -471,7 +485,7 @@ Begin at START-PT."
                        (min content-length (+ idx 16))))
                      (setq idx (+ idx 16)))
                  (when gptel-mode
-                   (insert "\n\n" gptel-prompt-string)
+                   (insert "\n\n" (gptel-prompt-string))
                    (gptel--update-header-line " Ready" 'success))
                  (when start-pt (goto-char (marker-position start-pt)))
                  (accept-change-group (symbol-value handle))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]