From 7c2e342f358019f236e641b920615ede11dbde86 Mon Sep 17 00:00:00 2001 From: Karthik Chikmagalur Date: Thu, 11 Jan 2024 17:21:13 -0800 Subject: [PATCH] gptel-transient: Add prompting from kill-ring * gptel-transient.el (gptel-menu, gptel--suffix-send): Add a transient menu option to select the prompt from the kill-ring. By default the latest kill is selected. Sending with a prefix-arg allows for choosing the kill ring element. TODO: This latter behavior needs to be made discoverable somehow. --- gptel-transient.el | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/gptel-transient.el b/gptel-transient.el index 8288943..f1c7e1b 100644 --- a/gptel-transient.el +++ b/gptel-transient.el @@ -123,6 +123,7 @@ which see." (gptel--infix-temperature)] ["Prompt:" ("p" "From minibuffer instead" "p") + ("y" "From kill-ring instead" "y") ("i" "Replace/Delete prompt" "i") "Response to:" ("m" "Minibuffer instead" "m") @@ -379,13 +380,20 @@ will get progressively longer!" (buffer) (position) (callback) (gptel-buffer-name) (prompt - (and (member "p" args) - (read-string - (format "Ask %s: " (gptel-backend-name gptel-backend)) - (apply #'buffer-substring-no-properties - (if (use-region-p) - (list (region-beginning) (region-end)) - (list (line-beginning-position) (line-end-position)))))))) + (cond + ((member "p" args) + (read-string + (format "Ask %s: " (gptel-backend-name gptel-backend)) + (apply #'buffer-substring-no-properties + (if (use-region-p) + (list (region-beginning) (region-end)) + (list (line-beginning-position) (line-end-position)))))) + ((member "y" args) + (unless (car-safe kill-ring) + (user-error "`kill-ring' is empty! Nothing to send.")) + (if current-prefix-arg + (read-from-kill-ring "Prompt from kill-ring: ") + (current-kill 0)))))) (cond ((member "m" args) (setq stream nil)