gptel-transient: Change menu display

* gptel-transient.el (gptel-menu, gptel-lisp-variable,
gptel--infix-num-messages-to-send, gptel--infix-max-tokens,
gptel--infix-provider): Improve the wording and the display of the
default settings.  Define a new class `gptel-lisp-variable` to
faciliate this.
This commit is contained in:
Karthik Chikmagalur 2024-03-13 22:05:11 -07:00
parent f529457bbe
commit 7e6b106516

View file

@ -294,6 +294,16 @@ documention."
(ignore-errors
(read-from-minibuffer prompt initial-input read-expression-map t history)))
(defclass gptel-lisp-variable (transient-lisp-variable)
((display-nil :initarg :display-nil))
"Lisp variables that show :display-nil instead of nil.")
(cl-defmethod transient-format-value
((obj gptel-lisp-variable))
(propertize (prin1-to-string (or (oref obj value)
(oref obj display-nil)))
'face 'transient-value))
(transient-define-infix gptel--infix-num-messages-to-send ()
"Number of recent messages to send with each exchange.
@ -301,9 +311,11 @@ By default, the full conversation history is sent with every new
prompt. This retains the full context of the conversation, but
can be expensive in token size. Set how many recent messages to
include."
:description "Number of past messages to send"
:class 'transient-lisp-variable
:description "previous responses"
:class 'gptel-lisp-variable
:variable 'gptel--num-messages-to-send
:display-nil 'all
:format " %k %v %d"
:key "-n"
:prompt "Number of past messages to include for context (leave empty for all): "
:reader 'gptel--transient-read-variable)
@ -315,8 +327,9 @@ This is roughly the number of words in the response. 100-300 is a
reasonable range for short answers, 400 or more for longer
responses."
:description "Response length (tokens)"
:class 'transient-lisp-variable
:class 'gptel-lisp-variable
:variable 'gptel-max-tokens
:display-nil 'auto
:key "-c"
:prompt "Response length in tokens (leave empty: default, 80-200: short, 200-500: long): "
:reader 'gptel--transient-read-variable)
@ -344,7 +357,7 @@ responses."
(transient-define-infix gptel--infix-provider ()
"AI Provider for Chat."
:description "GPT Model: "
:description "GPT Model"
:class 'gptel-provider-variable
:prompt "Model provider: "
:variable 'gptel-backend
@ -412,7 +425,8 @@ responses."
"Send ARGS."
:key "RET"
:description "Send prompt"
(interactive (list (transient-args transient-current-command)))
(interactive (list (transient-args
(or transient-current-command 'gptel-menu))))
(let ((stream gptel-stream)
(in-place (and (member "i" args) t))
(output-to-other-buffer-p)