blob: d37ff403d62d2cd7fb31a4525e33bb82406c0726 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
;;; llm-chat-replacements.el --- Chat replacements functionality -*- lexical-binding: t; -*-
;; This file is not part of GNU Emacs.
;;; Code:
(defcustom llm-chat-user-replacements nil
"User defined replacement key value pairs.
Must be a list of cons cells like (\"key\" . \"value\")."
:type '(alist :key-type string :value-type string)
:group 'llm-chat)
(defvar llm-chat-replacements-dict (make-hash-table :test 'equal))
(defun llm-chat-get-replacements-dict ()
llm-chat-replacements-dict)
(defun llm-chat-reset-replacements-dict ()
(clrhash llm-chat-replacements-dict))
(defun llm-chat-remove-replacementss-dict (key)
(remhash key llm-chat-replacements-dict))
(defun llm-chat-add-replacements-dict (key-value-pair)
(if (and (consp key-value-pair)
(stringp (car key-value-pair))
(stringp (cdr key-value-pair)))
(puthash (car key-value-pair) (cdr key-value-pair) llm-chat-replacements-dict)
(message "key-value-pair is not a single key value cons")))
(defun llm-chat-add-list-replacements-dict (list-of-key-value-pairs)
(dolist (key-value-pair list-of-key-value-pairs)
(llm-chat-add-replacements-dict key-value-pair)))
(defun llm-chat-init-replacements-dict ()
(llm-chat-reset-replacements-dict)
(when llm-chat-user-replacementss
(llm-chat-add-list-replacements-dict llm-chat-user-replacementss)))
(defun llm-chat-bulk-replacements-with-dict (text dict)
(with-temp-buffer
(insert text)
(cond
((hash-table-p dict)
(maphash
(lambda (key value)
(goto-char (point-min))
(while (search-forward key nil t)
(replace-match value t t)))
dict)))
(buffer-string)))
(provide 'llm-chat-replacements)
;;; llm-chat-replacements.el ends here
|