Allow the user to select target language and engine, ask for insertion
With a prefix argument, kagi.el will ask the possibilities one by one.
This commit is contained in:
parent
602a67bb59
commit
f5316c1c4e
1 changed files with 51 additions and 26 deletions
55
kagi.el
55
kagi.el
|
@ -408,8 +408,13 @@ Returns a formatted string to be displayed by the shell."
|
||||||
(string-match-p (rx (seq bos "http" (? "s") "://" (+ (not space)) eos)) s))
|
(string-match-p (rx (seq bos "http" (? "s") "://" (+ (not space)) eos)) s))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun kagi-summarize (text-or-url)
|
(defun kagi-summarize (text-or-url &optional language engine)
|
||||||
"Return the summary of the given TEXT-OR-URL."
|
"Return the summary of the given TEXT-OR-URL."
|
||||||
|
|
||||||
|
(let* ((kagi-summarizer-default-language
|
||||||
|
(or language kagi-summarizer-default-language))
|
||||||
|
(kagi-summarizer-engine
|
||||||
|
(or engine kagi-summarizer-engine)))
|
||||||
(if-let* ((response (if (kagi--url-p text-or-url)
|
(if-let* ((response (if (kagi--url-p text-or-url)
|
||||||
(kagi--call-url-summarizer text-or-url)
|
(kagi--call-url-summarizer text-or-url)
|
||||||
(kagi--call-text-summarizer text-or-url)))
|
(kagi--call-text-summarizer text-or-url)))
|
||||||
|
@ -420,25 +425,46 @@ Returns a formatted string to be displayed by the shell."
|
||||||
(error (format "%s (%s)"
|
(error (format "%s (%s)"
|
||||||
(gethash "msg" firsterror)
|
(gethash "msg" firsterror)
|
||||||
(gethash "code" firsterror)))
|
(gethash "code" firsterror)))
|
||||||
(error "An error occurred while requesting a summary"))))
|
(error "An error occurred while requesting a summary")))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun kagi-summarize-buffer (buffer)
|
(defun kagi-summarize-buffer (buffer &optional insert language engine)
|
||||||
"Summarize the BUFFER's content and show it in a new window."
|
"Summarize the BUFFER's content and show it in a new window."
|
||||||
(interactive "b")
|
(interactive (list
|
||||||
(with-current-buffer buffer
|
(read-buffer (format-prompt "Buffer" "") nil t)
|
||||||
(kagi--display-summary
|
(and (equal current-prefix-arg '(4)) (y-or-n-p "Insert summary at point?"))
|
||||||
(kagi-summarize (buffer-string))
|
(when (equal current-prefix-arg '(4))
|
||||||
|
(completing-read (format-prompt "Output language" "")
|
||||||
|
kagi--summarizer-languages nil t))
|
||||||
|
(when (equal current-prefix-arg '(4))
|
||||||
|
(completing-read (format-prompt "Engine" "")
|
||||||
|
kagi--summarizer-engines nil t kagi-summarizer-engine))))
|
||||||
|
(let ((summary (with-current-buffer buffer
|
||||||
|
(kagi-summarize (buffer-string) language engine)))
|
||||||
|
(summary-buffer-name (with-current-buffer buffer
|
||||||
(kagi--summary-buffer-name (buffer-name)))))
|
(kagi--summary-buffer-name (buffer-name)))))
|
||||||
|
(if (and insert (not buffer-read-only))
|
||||||
|
(kagi--insert-summary summary)
|
||||||
|
(kagi--display-summary summary summary-buffer-name))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun kagi-summarize-region (begin end)
|
(defun kagi-summarize-region (begin end &optional language engine)
|
||||||
"Summarize the region's content marked by BEGIN and END positions.
|
"Summarize the region's content marked by BEGIN and END positions.
|
||||||
|
|
||||||
Shows the summary in a new window."
|
Shows the summary in a new window."
|
||||||
(interactive "r")
|
(interactive (list
|
||||||
|
(region-beginning)
|
||||||
|
(region-end)
|
||||||
|
(when (equal current-prefix-arg '(4))
|
||||||
|
(completing-read (format-prompt "Output language" "")
|
||||||
|
kagi--summarizer-languages nil t))
|
||||||
|
(when (equal current-prefix-arg '(4))
|
||||||
|
(completing-read (format-prompt "Engine" "")
|
||||||
|
kagi--summarizer-engines nil t kagi-summarizer-engine))))
|
||||||
(kagi--display-summary
|
(kagi--display-summary
|
||||||
(kagi-summarize (buffer-substring-no-properties begin end))
|
(kagi-summarize (buffer-substring-no-properties begin end)
|
||||||
|
language
|
||||||
|
engine)
|
||||||
(kagi--summary-buffer-name (buffer-name))))
|
(kagi--summary-buffer-name (buffer-name))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
|
@ -463,16 +489,15 @@ types are supported:
|
||||||
(interactive
|
(interactive
|
||||||
(list
|
(list
|
||||||
(read-string (format-prompt "URL" ""))
|
(read-string (format-prompt "URL" ""))
|
||||||
(or (equal current-prefix-arg '(4))
|
(and (equal current-prefix-arg '(4)) (y-or-n-p "Insert summary at point?"))
|
||||||
(and (equal current-prefix-arg '(16)) (y-or-n-p "Insert summary at point?")))
|
(when (equal current-prefix-arg '(4))
|
||||||
(when (equal current-prefix-arg '(16))
|
|
||||||
(completing-read (format-prompt "Output language" "")
|
(completing-read (format-prompt "Output language" "")
|
||||||
kagi--summarizer-languages nil t))
|
kagi--summarizer-languages nil t))
|
||||||
(when (equal current-prefix-arg '(16))
|
(when (equal current-prefix-arg '(4))
|
||||||
(completing-read (format-prompt "Engine" "")
|
(completing-read (format-prompt "Engine" "")
|
||||||
kagi--summarizer-engines nil t kagi-summarizer-engine))))
|
kagi--summarizer-engines nil t kagi-summarizer-engine))))
|
||||||
|
|
||||||
(let ((summary (kagi-summarize url)))
|
(let ((summary (kagi-summarize url language engine)))
|
||||||
(if (and insert (not buffer-read-only))
|
(if (and insert (not buffer-read-only))
|
||||||
(kagi--insert-summary summary)
|
(kagi--insert-summary summary)
|
||||||
(kagi--display-summary
|
(kagi--display-summary
|
||||||
|
|
Loading…
Reference in a new issue