Set bold text with font-lock-face
This commit is contained in:
parent
9a224efcf4
commit
cabfd25d2e
1 changed files with 32 additions and 10 deletions
32
kagi.el
32
kagi.el
|
@ -75,17 +75,39 @@ The token can be generated inside your account at https://kagi.com/settings?p=ap
|
||||||
(string-join curl-flags " ")
|
(string-join curl-flags " ")
|
||||||
kagi-api-fastgpt-url)))
|
kagi-api-fastgpt-url)))
|
||||||
|
|
||||||
|
(defun kagi--html-bold-to-face (string)
|
||||||
|
"Convert HTML tags inside STRING to faces.
|
||||||
|
|
||||||
|
Fun fact: initial version of this function was generated by
|
||||||
|
FastGPT with the following prompt:
|
||||||
|
|
||||||
|
write an Emacs Lisp function that accepts a string with html
|
||||||
|
bold tags, and returns a string with bold face text properties
|
||||||
|
applied for the tags content atd the tags removed"
|
||||||
|
(with-temp-buffer
|
||||||
|
(insert string)
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (re-search-forward "<b>\\([^<]*\\)</b>" nil t)
|
||||||
|
(replace-match (propertize (match-string 1) 'font-lock-face 'bold) t nil))
|
||||||
|
(buffer-string)))
|
||||||
|
|
||||||
(defun kagi--format-output (output)
|
(defun kagi--format-output (output)
|
||||||
;; Replace Bold tags
|
(kagi--html-bold-to-face output))
|
||||||
(replace-regexp-in-string "</b>" "\e[0m"
|
|
||||||
(replace-regexp-in-string "<b>" "\e[1m" output)))
|
|
||||||
|
(defun kagi--format-reference-index (i)
|
||||||
|
(propertize (format "[%d]" i) 'font-lock-face 'bold))
|
||||||
|
|
||||||
(defun kagi--format-references (references)
|
(defun kagi--format-references (references)
|
||||||
(string-join (seq-map-indexed (lambda (ref i)
|
(string-join
|
||||||
|
(seq-map-indexed (lambda (ref i)
|
||||||
(let ((title (gethash "title" ref))
|
(let ((title (gethash "title" ref))
|
||||||
(snippet (gethash "snippet" ref))
|
(snippet (gethash "snippet" ref))
|
||||||
(url (gethash "url" ref)))
|
(url (gethash "url" ref)))
|
||||||
(format "\e[1m[%d]\e[0m %s\n%s\n%s" (1+ i) title (kagi--format-output snippet) url)))
|
(format "%s %s\n%s\n%s"
|
||||||
|
(kagi--format-reference-index (1+ i))
|
||||||
|
title
|
||||||
|
(kagi--html-bold-to-face snippet) url)))
|
||||||
references)
|
references)
|
||||||
"\n\n"))
|
"\n\n"))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue