1
0
Fork 0

Add no-cache parameter to kagi-summarize-{buffer,region}

This commit is contained in:
Bram Schoenmakers 2024-03-06 21:06:43 +01:00
parent 9773229d6b
commit 72119bd9b7
Signed by: bram
GPG key ID: 0CCD19DFDC63258F
2 changed files with 35 additions and 17 deletions

View file

@ -372,19 +372,20 @@ https://www.example.com"
(expect #'kagi--display-summary :not :to-have-been-called)
(expect #'kagi--insert-summary :to-have-been-called))
(it "passes arguments to kagi-summary"
(spy-on #'kagi--get-summarizer-parameters :and-return-value '(t lang bram random))
(spy-on #'kagi--get-summarizer-parameters :and-return-value '(t lang bram random maybe))
(call-interactively #'kagi-summarize-buffer)
(expect #'kagi-summarize :to-have-been-called)
(expect #'kagi--display-summary :not :to-have-been-called)
(expect #'kagi--insert-summary :to-have-been-called)
(kagi-test--expect-arg #'kagi-summarize 1 :to-equal 'lang)
(kagi-test--expect-arg #'kagi-summarize 2 :to-equal 'bram)
(kagi-test--expect-arg #'kagi-summarize 3 :to-equal 'random)))
(kagi-test--expect-arg #'kagi-summarize 3 :to-equal 'random)
(kagi-test--expect-arg #'kagi-summarize 4 :to-equal 'maybe)))
(describe "kagi-summarize-region"
(before-each
(spy-on #'region-beginning)
(spy-on #'region-end)
(spy-on #'kagi--get-summarizer-parameters :and-return-value '(lang bram random))
(spy-on #'kagi--get-summarizer-parameters :and-return-value '(lang bram random maybe))
(spy-on #'kagi-summarize :and-return-value dummy-output)
(spy-on #'buffer-name :and-return-value "buffer-name")
(spy-on #'buffer-substring-no-properties))
@ -394,7 +395,8 @@ https://www.example.com"
(expect #'kagi-summarize :to-have-been-called)
(kagi-test--expect-arg #'kagi-summarize 1 :to-equal 'lang)
(kagi-test--expect-arg #'kagi-summarize 2 :to-equal 'bram)
(kagi-test--expect-arg #'kagi-summarize 3 :to-equal 'random))
(kagi-test--expect-arg #'kagi-summarize 3 :to-equal 'random)
(kagi-test--expect-arg #'kagi-summarize 4 :to-equal 'maybe))
(it "opens a buffer with the summary"
(call-interactively #'kagi-summarize-region)
(expect #'kagi--display-summary :to-have-been-called)
@ -409,7 +411,8 @@ https://www.example.com"
(call-interactively #'kagi-summarize-url)
(kagi-test--expect-arg #'kagi-summarize 1 :to-equal 'lang)
(kagi-test--expect-arg #'kagi-summarize 2 :to-equal 'bram)
(kagi-test--expect-arg #'kagi-summarize 3 :to-equal 'random))
(kagi-test--expect-arg #'kagi-summarize 3 :to-equal 'random)
(kagi-test--expect-arg #'kagi-summarize 4 :to-equal nil))
(it "opens a buffer with the summary"
(call-interactively #'kagi-summarize-url)
(expect #'kagi--display-summary :to-have-been-called)

39
kagi.el
View file

@ -600,11 +600,14 @@ content."
(gethash "code" firsterror)))
(error "An error occurred while requesting a summary")))))
(defun kagi--get-summarizer-parameters (&optional prompt-insert-p)
(defun kagi--get-summarizer-parameters (&optional prompt-insert-p prompt-cache-p)
"Return a list of interactively obtained summarizer parameters.
Not all commands need to insert a summary, so only prompt for
this when PROMPT-INSERT-P is non-nil."
this when PROMPT-INSERT-P is non-nil.
Likewise, not all commands need to disable the cache, so only
prompt when PROMPT-CACHE-P is t."
(append
(when prompt-insert-p
(list
@ -639,11 +642,14 @@ this when PROMPT-INSERT-P is non-nil."
summary-formats
kagi-summarizer-default-summary-format
nil
#'string=))))))
#'string=))))
(list
(and prompt-cache-p
(equal current-prefix-arg '(4))
(y-or-n-p "Cache the result?")))))
;; TODO no-cache
;;;###autoload
(defun kagi-summarize-buffer (buffer &optional insert language engine format interactive-p)
(defun kagi-summarize-buffer (buffer &optional insert language engine format no-cache interactive-p)
"Summarize the BUFFER's content and show it in a new window.
By default, the summary is shown in a new buffer.
@ -662,6 +668,11 @@ defined in `kagi--summarizer-engines'.
FORMAT is the summary format, where `summary' returns a paragraph
of text and `takeaway' returns a bullet list.
When NO-CACHE is t, inputs are not retained inside Kagi's
infrastructure. When nil, the default value for
`kagi-summarizer-cache' is used. Set to t for confidential
content.
With a single universal prefix argument (`C-u'), the user is
prompted whether the summary has to be inserted at point, which
target LANGUAGE to use, which summarizer ENGINE to use and which
@ -670,19 +681,18 @@ summary FORMAT to use.
INTERACTIVE-P is t when called interactively."
(interactive (append
(list (read-buffer (format-prompt "Buffer" "") nil t))
(kagi--get-summarizer-parameters t)
(kagi--get-summarizer-parameters t t)
(list t)))
(let ((summary (with-current-buffer buffer
(kagi-summarize (buffer-string) language engine format)))
(kagi-summarize (buffer-string) language engine format no-cache)))
(summary-buffer-name (with-current-buffer buffer
(kagi--summary-buffer-name (buffer-name)))))
(cond ((and insert (not buffer-read-only)) (kagi--insert-summary summary))
(interactive-p (kagi--display-summary summary summary-buffer-name))
(t summary))))
;; TODO no-cache
;;;###autoload
(defun kagi-summarize-region (begin end &optional language engine format)
(defun kagi-summarize-region (begin end &optional language engine format no-cache)
"Summarize the region's content marked by BEGIN and END positions.
The summary is always shown in a new buffer.
@ -697,20 +707,25 @@ defined in `kagi--summarizer-engines'.
FORMAT is the summary format, where `summary' returns a paragraph
of text and `takeaway' returns a bullet list.
When NO-CACHE is t, inputs are not retained inside Kagi's
infrastructure. When nil, the default value for
`kagi-summarizer-cache' is used. Set to t for confidential
content.
With a single universal prefix argument (`C-u'), the user is
prompted for which target LANGUAGE to use, which summarizer
ENGINE to use and which summary FORMAT to use."
(interactive (append
(list (region-beginning) (region-end))
(kagi--get-summarizer-parameters)))
(kagi--get-summarizer-parameters nil t)))
(kagi--display-summary
(kagi-summarize (buffer-substring-no-properties begin end)
language
engine
format)
format
no-cache)
(kagi--summary-buffer-name (buffer-name))))
;; TODO no-cache
;;;###autoload
(defun kagi-summarize-url (url &optional insert language engine format)
"Show the summary of the content behind the given URL.