Compare commits
3 commits
f086fd433a
...
1702fadaeb
Author | SHA1 | Date | |
---|---|---|---|
Bram Schoenmakers | 1702fadaeb | ||
Bram Schoenmakers | e2b81ef432 | ||
Bram Schoenmakers | 28793401df |
|
@ -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
|
||||
|
|
35
kagi-test.el
35
kagi-test.el
|
@ -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
19
kagi.el
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue