gptel: Tweak markdown to org conversion
gptel.el (gptel--convert-markdown->org, gptel--stream-convert-markdown->org): Handle the case of Markdown bullet lists that begin with a "*", which the Gemini LLMs produce often. Address #238.
This commit is contained in:
parent
2487ada4d6
commit
b634f05fe5
1 changed files with 35 additions and 27 deletions
62
gptel.el
62
gptel.el
|
@ -1298,23 +1298,28 @@ elements."
|
||||||
(delete-char 1))
|
(delete-char 1))
|
||||||
((looking-back "\\(?:[[:word:]]\\|\s\\)\\*\\{2\\}"
|
((looking-back "\\(?:[[:word:]]\\|\s\\)\\*\\{2\\}"
|
||||||
(max (- (point) 3) (point-min)))
|
(max (- (point) 3) (point-min)))
|
||||||
(backward-delete-char 1))))
|
(delete-char -1))))
|
||||||
("*"
|
("*"
|
||||||
(if (save-match-data
|
(cond
|
||||||
(and (looking-back "\\(?:[[:space:]]\\|\s\\)\\(?:_\\|\\*\\)"
|
((save-match-data
|
||||||
(max (- (point) 2) (point-min)))
|
(and (looking-back "\\(?:[[:space:]]\\|\s\\)\\(?:_\\|\\*\\)"
|
||||||
(not (looking-at "[[:space:]]\\|\s"))))
|
(max (- (point) 2) (point-min)))
|
||||||
;; Possible beginning of italics
|
(not (looking-at "[[:space:]]\\|\s"))))
|
||||||
(and
|
;; Possible beginning of emphasis
|
||||||
(save-excursion
|
(and
|
||||||
(when (and (re-search-forward (regexp-quote (match-string 0)) nil t)
|
(save-excursion
|
||||||
(looking-at "[[:space]]\\|\s")
|
(when (and (re-search-forward (regexp-quote (match-string 0))
|
||||||
(not (looking-back "\\(?:[[:space]]\\|\s\\)\\(?:_\\|\\*\\)"
|
(line-end-position) t)
|
||||||
(max (- (point) 2) (point-min)))))
|
(looking-at "[[:space]]\\|\s")
|
||||||
(backward-delete-char 1)
|
(not (looking-back "\\(?:[[:space]]\\|\s\\)\\(?:_\\|\\*\\)"
|
||||||
(insert "/") t))
|
(max (- (point) 2) (point-min)))))
|
||||||
(progn (backward-delete-char 1)
|
(delete-char -1) (insert "/") t))
|
||||||
(insert "/")))))))
|
(progn (delete-char -1) (insert "/"))))
|
||||||
|
((save-excursion
|
||||||
|
(ignore-errors (backward-char 2))
|
||||||
|
(looking-at "\\(?:$\\|\\`\\)\n\\*[[:space:]]"))
|
||||||
|
;; Bullet point, replace with hyphen
|
||||||
|
(delete-char -1) (insert "-"))))))
|
||||||
(buffer-string)))
|
(buffer-string)))
|
||||||
|
|
||||||
(defun gptel--stream-convert-markdown->org ()
|
(defun gptel--stream-convert-markdown->org ()
|
||||||
|
@ -1363,18 +1368,21 @@ text stream."
|
||||||
(delete-char 1))
|
(delete-char 1))
|
||||||
((looking-back "\\(?:[[:word:]]\\|\s\\)\\*\\{2\\}"
|
((looking-back "\\(?:[[:word:]]\\|\s\\)\\*\\{2\\}"
|
||||||
(max (- (point) 3) (point-min)))
|
(max (- (point) 3) (point-min)))
|
||||||
(backward-delete-char 1))))
|
(delete-char -1))))
|
||||||
((and "*" (guard (not in-src-block)))
|
((and "*" (guard (not in-src-block)))
|
||||||
(when (save-match-data
|
(save-match-data
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(backward-char 2)
|
(ignore-errors (backward-char 2))
|
||||||
(or
|
(cond
|
||||||
(looking-at
|
((or (looking-at
|
||||||
"[^[:space:][:punct:]\n]\\(?:_\\|\\*\\)\\(?:[[:space:][:punct:]]\\|$\\)")
|
"[^[:space:][:punct:]\n]\\(?:_\\|\\*\\)\\(?:[[:space:][:punct:]]\\|$\\)")
|
||||||
(looking-at
|
(looking-at
|
||||||
"\\(?:[[:space:][:punct:]]\\)\\(?:_\\|\\*\\)\\([^[:space:][:punct:]]\\|$\\)"))))
|
"\\(?:[[:space:][:punct:]]\\)\\(?:_\\|\\*\\)\\([^[:space:][:punct:]]\\|$\\)"))
|
||||||
(backward-delete-char 1)
|
;; Emphasis, replace with slashes
|
||||||
(insert "/"))))))
|
(forward-char 2) (delete-char -1) (insert "/"))
|
||||||
|
((looking-at "\\(?:$\\|\\`\\)\n\\*[[:space:]]")
|
||||||
|
;; Bullet point, replace with hyphen
|
||||||
|
(forward-char 2) (delete-char -1) (insert "-")))))))))
|
||||||
(if noop-p
|
(if noop-p
|
||||||
(buffer-substring (point) start-pt)
|
(buffer-substring (point) start-pt)
|
||||||
(prog1 (buffer-substring (point) (point-max))
|
(prog1 (buffer-substring (point) (point-max))
|
||||||
|
|
Loading…
Add table
Reference in a new issue