1
0
Fork 0

Compare commits

...

3 commits

3 changed files with 41 additions and 15 deletions

View file

@ -225,6 +225,8 @@ There's also a [[https://github.com/casey/just][justfile]] which allows you to e
- =kagi-proofread= asks FastGPT to proofread the region, a buffer or a text input.
- =kagi-summarize-buffer= returns the summary when called non-interactively.
- Unit tests added.
*** Fixes

View file

@ -236,7 +236,6 @@ https://www.example.com"
(spy-on #'read-buffer :and-return-value "")
(spy-on #'get-buffer)
(expect (call-interactively #'kagi-proofread) :to-throw))))
(describe "Summarizer"
:var ((just-enough-text-input nil)
(just-too-little-text-input nil)
@ -335,18 +334,40 @@ https://www.example.com"
(before-each
(spy-on #'read-buffer)
(spy-on #'set-buffer)
(spy-on #'kagi-summarize)
(spy-on #'buffer-name :and-return-value "dummy-buffer")
(spy-on #'kagi-summarize :and-return-value dummy-output)
(spy-on #'kagi--display-summary)
(spy-on #'kagi--insert-summary))
(it "calls kagi-summarize with text"
(kagi-summarize-buffer "dummy")
(it "returns the summary when called non-interactively"
(expect (kagi-summarize-buffer "dummy") :to-be dummy-output)
(expect #'kagi-summarize :to-have-been-called)
(expect #'kagi--display-summary :to-have-been-called)
(expect #'kagi--display-summary :not :to-have-been-called)
(expect #'kagi--insert-summary :not :to-have-been-called))
(it "inserts the summary when requested"
(it "inserts the summary when requested, non-interactively"
(kagi-summarize-buffer "dummy" t)
(expect #'kagi-summarize :to-have-been-called)
(expect #'kagi--display-summary :not :to-have-been-called)
(expect #'kagi--insert-summary :to-have-been-called)))))
(expect #'kagi--insert-summary :to-have-been-called))
(it "returns the summary when called interactively"
(call-interactively #'kagi-summarize-buffer)
(expect #'kagi-summarize :to-have-been-called)
(expect #'kagi--display-summary :to-have-been-called)
(expect #'kagi--insert-summary :not :to-have-been-called))
(it "inserts the summary when requested, interactively"
(spy-on #'kagi--get-summarizer-parameters :and-return-value '(t nil nil))
(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))
(it "passes arguments to kagi-summary"
(spy-on #'kagi--get-summarizer-parameters :and-return-value '(t lang bram random))
(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)
(let ((args (spy-calls-args-for #'kagi-summarize 0)))
(expect (nth 1 args) :to-equal 'lang)
(expect (nth 2 args) :to-equal 'bram)
(expect (nth 3 args) :to-equal 'random))))))
;;; kagi-test.el ends here

19
kagi.el
View file

@ -631,7 +631,7 @@ this when PROMPT-INSERT-P is non-nil."
#'string=))))))
;;;###autoload
(defun kagi-summarize-buffer (buffer &optional insert language engine format)
(defun kagi-summarize-buffer (buffer &optional insert language engine format interactive-p)
"Summarize the BUFFER's content and show it in a new window.
By default, the summary is shown in a new buffer.
@ -653,17 +653,20 @@ of text and `takeaway' returns a bullet list.
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
summary FORMAT to use."
(interactive (cons
(read-buffer (format-prompt "Buffer" "") nil t)
(kagi--get-summarizer-parameters t)))
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)
(list t)))
(let ((summary (with-current-buffer buffer
(kagi-summarize (buffer-string) language engine format)))
(summary-buffer-name (with-current-buffer buffer
(kagi--summary-buffer-name (buffer-name)))))
(if (and insert (not buffer-read-only))
(kagi--insert-summary summary)
(kagi--display-summary summary summary-buffer-name))))
(cond ((and insert (not buffer-read-only)) (kagi--insert-summary summary))
(interactive-p (kagi--display-summary summary summary-buffer-name))
(t summary))))
;;;###autoload
(defun kagi-summarize-region (begin end &optional language engine format)