gptel-transient: Add outline-minor-mode support

* gptel-transient.el: Add section headers and an `outline-regexp'.
This commit is contained in:
Karthik Chikmagalur 2023-04-09 04:16:09 -07:00
parent 937c754e57
commit 23332a9bc5

View file

@ -82,6 +82,8 @@ Or is it the other way around?"
;; ** Prefix for setting the system prompt. ;; ** Prefix for setting the system prompt.
;; ** Prefix for setting the system prompt.
(transient-define-prefix gptel-system-prompt () (transient-define-prefix gptel-system-prompt ()
"Change the system prompt to send ChatGPT. "Change the system prompt to send ChatGPT.
@ -120,6 +122,8 @@ Customize `gptel-directives' for task-specific prompts."
(alist-get 'chat gptel-directives))) (alist-get 'chat gptel-directives)))
:transient t)]) :transient t)])
;; ** Prefix for rewriting/refactoring
(transient-define-prefix gptel-rewrite-menu () (transient-define-prefix gptel-rewrite-menu ()
"Rewrite or refactor text region using ChatGPT." "Rewrite or refactor text region using ChatGPT."
[:description [:description
@ -141,6 +145,7 @@ Customize `gptel-directives' for task-specific prompts."
(unless gptel--rewrite-message (unless gptel--rewrite-message
(setq gptel--rewrite-message (gptel--rewrite-message))) (setq gptel--rewrite-message (gptel--rewrite-message)))
(transient-setup 'gptel-rewrite-menu)) (transient-setup 'gptel-rewrite-menu))
;; TODO: Switch to dynamic Transient menus (below) once there's a new Transient release ;; TODO: Switch to dynamic Transient menus (below) once there's a new Transient release
;; (transient-define-prefix gptel-system-prompt () ;; (transient-define-prefix gptel-system-prompt ()
;; "Change the system prompt to send ChatGPT." ;; "Change the system prompt to send ChatGPT."
@ -166,6 +171,10 @@ Customize `gptel-directives' for task-specific prompts."
;; finally return (cons (list 'gptel--suffix-system-message) ;; finally return (cons (list 'gptel--suffix-system-message)
;; prompt-suffixes)))) ;; prompt-suffixes))))
;; * Transient Infixes
;; ** Infixes for model parameters
(transient-define-infix gptel--infix-num-messages-to-send () (transient-define-infix gptel--infix-num-messages-to-send ()
"Number of recent messages to send with each exchange. "Number of recent messages to send with each exchange.
@ -249,6 +258,8 @@ will get progressively longer!"
(buf (call-interactively #'gptel))) (buf (call-interactively #'gptel)))
(and (bufferp buf) (and (bufferp buf)
(with-current-buffer buf (gptel-send))))) (with-current-buffer buf (gptel-send)))))
;; ** Infix for the refactor/rewrite system message
(transient-define-infix gptel--infix-rewrite-prompt () (transient-define-infix gptel--infix-rewrite-prompt ()
"Chat directive (system message) to use for rewriting or refactoring." "Chat directive (system message) to use for rewriting or refactoring."
:description (lambda () (if (derived-mode-p 'prog-mode) :description (lambda () (if (derived-mode-p 'prog-mode)
@ -263,6 +274,10 @@ will get progressively longer!"
(read-string (read-string
prompt (gptel--rewrite-message) history))) prompt (gptel--rewrite-message) history)))
;; * Transient Suffixes
;; ** Suffix to send prompt
;; ** Set system message
(transient-define-suffix gptel--suffix-system-message () (transient-define-suffix gptel--suffix-system-message ()
"Set directives sent to ChatGPT." "Set directives sent to ChatGPT."
:transient nil :transient nil
@ -304,6 +319,8 @@ will get progressively longer!"
(body-function . ,#'select-window))) (body-function . ,#'select-window)))
(call-interactively #'gptel-menu)))))) (call-interactively #'gptel-menu))))))
;; ** Suffixes for rewriting/refactoring
(transient-define-suffix gptel--suffix-rewrite () (transient-define-suffix gptel--suffix-rewrite ()
"Rewrite or refactor region contents." "Rewrite or refactor region contents."
:key "r" :key "r"
@ -368,3 +385,8 @@ will get progressively longer!"
(provide 'gptel-transient) (provide 'gptel-transient)
;;; gptel-transient.el ends here ;;; gptel-transient.el ends here
;; Local Variables:
;; outline-regexp: "^;; \\*+"
;; eval: (outline-minor-mode 1)
;; End: