branch: elpa/gptel
commit cf6999ac12bc4445c7613455f0fde050ef813d5f
Author: Karthik Chikmagalur <[email protected]>
Commit: Karthik Chikmagalur <[email protected]>

    Fix byte-compile warnings
---
 gptel.el | 91 +++++++++++++++++++++++++++++++++++-----------------------------
 1 file changed, 50 insertions(+), 41 deletions(-)

diff --git a/gptel.el b/gptel.el
index f2aa058867..c2b18eef41 100644
--- a/gptel.el
+++ b/gptel.el
@@ -1,4 +1,4 @@
-;;; gptel.el --- Interact with ChatGPT from Emacs      -*- lexical-binding: t; 
-*-
+;;; gptel.el --- A simple ChatGPT client for Emacs      -*- lexical-binding: 
t; -*-
 
 ;; Copyright (C) 2023  Karthik Chikmagalur
 
@@ -6,6 +6,7 @@
 ;; Version: 0.05
 ;; Package-Requires: ((emacs "27.1") (aio "1.0"))
 ;; Keywords: convenience
+;; URL: https://github.com/karthink/gptel
 
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -22,15 +23,18 @@
 
 ;;; Commentary:
 
-;; REQUIREMENTS:
+;; A ChatGPT client for Emacs.
+;;
+;; Requirements:
 ;; - You need an OpenAI API key. Set the variable `gptel-api-key' to the key 
or to
 ;;   a function of no arguments that returns the key.
 ;;
-;; - Install the package `emacs-aio' using `M-x package-install' or however 
you install packages.
+;; - If installing manually: Install the package `emacs-aio' using `M-x 
package-install'
+;;   or however you install packages.
 ;;
 ;; - Not required but recommended: Install `markdown-mode'.
 ;;
-;; USAGE:
+;; Usage:
 ;; - M-x gptel: Start a ChatGPT session
 ;; - C-u M-x gptel: Start another or multiple independent ChatGPT sessions
 ;;
@@ -48,38 +52,21 @@
 (require 'map)
 
 (defcustom gptel-api-key nil
-  "An OpenAI API key (string), or a function of no arguments that
-returns an API key."
+  "An OpenAI API key (string).
+
+Can also be a function of no arguments that returns an API
+key (more secure)."
+  :group 'gptel
   :type '(choice
           (string :tag "API key")
           (function :tag "Function that retuns the API key")))
 
-;;;###autoload
-(defun gptel (name &optional api-key)
-  "Switch to or start ChatGPT session with NAME.
-
-With a prefix arg, query for a (new) session name.
-
-Ask for API-KEY if `gptel-api-key' is unset."
-  (interactive (list (if current-prefix-arg
-                         (read-string "Session name: " 
(generate-new-buffer-name gptel-default-session))
-                       gptel-default-session)
-                     (or gptel-api-key
-                         (read-string "OpenAI API key: "))))
-  (unless gptel-api-key
-    (user-error "No API key available"))
-  (with-current-buffer (get-buffer-create name)
-    (unless (eq major-mode gptel-default-mode) (funcall gptel-default-mode))
-    (unless gptel-mode (gptel-mode 1))
-    (if (bobp) (insert gptel-prompt-string))
-    (pop-to-buffer (current-buffer))
-    (goto-char (point-max))
-    (skip-chars-backward "\t\r\n")
-    (setq header-line-format
-          (concat (propertize " " 'display '(space :align-to 0))
-                  (format "ChatGPT session (%s)" (buffer-name))))
-    (message "Send your query with %s!"
-             (substitute-command-keys "\\[gptel-send]"))))
+(defvar-local gptel--prompt-markers nil)
+(defvar gptel-default-session "*ChatGPT*")
+(defvar gptel-default-mode (if (featurep 'markdown-mode)
+                               'markdown-mode
+                             'text-mode))
+(defvar gptel-prompt-string "### ")
 
 (aio-defun gptel-send ()
   "Submit this prompt to ChatGPT."
@@ -126,7 +113,9 @@ Ask for API-KEY if `gptel-api-key' is unset."
       (kill-buffer response-buffer))))
 
 (aio-defun gptel-get-response (prompts)
-  ";;TODO:"
+  "Fetch response for PROMPTS from ChatGPT.
+
+Return the response buffer."
   (let* ((api-key
           (cond
            ((stringp gptel-api-key) gptel-api-key)
@@ -141,18 +130,11 @@ Ask for API-KEY if `gptel-api-key' is unset."
             ;; :temperature 1.0
             ;; :top_p 1.0
             :messages [,@prompts]))))
-    (pcase-let ((`(,status . ,buffer)
+    (pcase-let ((`(,_ . ,buffer)
                   (aio-await
                    (aio-url-retrieve 
"https://api.openai.com/v1/chat/completions";))))
       buffer)))
 
-(defvar-local gptel--prompt-markers nil)
-(defvar gptel-default-session "*ChatGPT*")
-(defvar gptel-default-mode (if (featurep 'markdown-mode)
-                               'markdown-mode
-                             'text-mode))
-(defvar gptel-prompt-string "### ")
-
 ;;;###autoload
 (define-minor-mode gptel-mode
   "Minor mode for interacting with ChatGPT."
@@ -163,6 +145,33 @@ Ask for API-KEY if `gptel-api-key' is unset."
     (define-key map (kbd "C-c RET") #'gptel-send)
     map))
 
+;;;###autoload
+(defun gptel (name &optional api-key)
+  "Switch to or start ChatGPT session with NAME.
+
+With a prefix arg, query for a (new) session name.
+
+Ask for API-KEY if `gptel-api-key' is unset."
+  (interactive (list (if current-prefix-arg
+                         (read-string "Session name: " 
(generate-new-buffer-name gptel-default-session))
+                       gptel-default-session)
+                     (or gptel-api-key
+                         (read-string "OpenAI API key: "))))
+  (unless api-key
+    (user-error "No API key available"))
+  (with-current-buffer (get-buffer-create name)
+    (unless (eq major-mode gptel-default-mode) (funcall gptel-default-mode))
+    (unless gptel-mode (gptel-mode 1))
+    (if (bobp) (insert gptel-prompt-string))
+    (pop-to-buffer (current-buffer))
+    (goto-char (point-max))
+    (skip-chars-backward "\t\r\n")
+    (setq header-line-format
+          (concat (propertize " " 'display '(space :align-to 0))
+                  (format "ChatGPT session (%s)" (buffer-name))))
+    (message "Send your query with %s!"
+             (substitute-command-keys "\\[gptel-send]"))))
+
 (defun gptel-parse-response (response-buffer)
   "Parse response in RESPONSE-BUFFER."
   (when (buffer-live-p response-buffer)

Reply via email to