Skip to content

Commit 144ea68

Browse files
committed
Highlight code block
1 parent e06f122 commit 144ea68

File tree

2 files changed

+48
-17
lines changed

2 files changed

+48
-17
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
## 🔗 References
1010

1111
- [ChatGPT.el](https://github.com/joshcho/ChatGPT.el)
12+
- [gptel](https://github.com/karthink/gptel)
1213

1314
## Contribute
1415

chatgpt.el

Lines changed: 47 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ Display buffer from BUFFER-OR-NAME."
9090
(pop-to-buffer buffer-or-name `((display-buffer-in-direction)
9191
(dedicated . t))))
9292

93-
(defun chatgpt--get-user ()
93+
(defun chatgpt-user ()
9494
"Return the current user."
9595
(if (string-empty-p openai-user)
9696
"user" ; this is free?
@@ -193,13 +193,39 @@ The data is consist of ROLE and CONTENT."
193193
;;
194194
;;; Display
195195

196+
(defun chatgpt--render-markdown (content)
197+
"Render CONTENT in markdown."
198+
(if (featurep 'markdown-mode)
199+
(with-temp-buffer
200+
(delay-mode-hooks (markdown-mode))
201+
(insert content)
202+
(font-lock-ensure)
203+
(buffer-string))
204+
content))
205+
206+
(defun chatgpt--fill-region (start end)
207+
"Like function `fill-region' (START to END), improve readability."
208+
(save-restriction
209+
(narrow-to-region start end)
210+
(goto-char (point-min))
211+
(while (not (eobp))
212+
(end-of-line)
213+
(when (< fill-column (current-column))
214+
(fill-region (line-beginning-position) (line-end-position)))
215+
(forward-line 1))))
216+
196217
(defun chatgpt--display-messages ()
197218
"Display all messages to latest response."
198219
(while (< chatgpt--display-pointer (length chatgpt-chat-history))
199220
(let ((message (elt chatgpt-chat-history chatgpt--display-pointer)))
200221
(let-alist message
201-
(insert .role ": " .content)
202-
(insert "\n\n")))
222+
(goto-char (point-max))
223+
(let ((start (point))
224+
(content (chatgpt--render-markdown .content))
225+
(is-user (string= (chatgpt-user) .role)))
226+
(insert "<" .role ">: " content)
227+
(insert "\n\n")
228+
(chatgpt--fill-region start (point)))))
203229
(cl-incf chatgpt--display-pointer)))
204230

205231
(defun chatgpt-type-response ()
@@ -210,7 +236,7 @@ The data is consist of ROLE and CONTENT."
210236
(message "[BUSY] Waiting for OpanAI to response..."))
211237
(t
212238
(let ((response (read-string "Type response: "))
213-
(user (chatgpt--get-user))
239+
(user (chatgpt-user))
214240
(instance chatgpt-instance))
215241
(chatgpt--add-message user response) ; add user's response
216242
(chatgpt-with-instance instance
@@ -248,19 +274,23 @@ The data is consist of ROLE and CONTENT."
248274
(defun chatgpt-info ()
249275
"Show session information."
250276
(interactive)
251-
(lv-message
252-
(concat
253-
(format "model: %s" chatgpt-model) "\n"
254-
(format "prompt_tokens: %s | completion_tokens: %s | total_tokens: %s"
255-
(ht-get chatgpt-data 'prompt_tokens 0)
256-
(ht-get chatgpt-data 'completion_tokens 0)
257-
(ht-get chatgpt-data 'total_tokens 0))
258-
"\n"
259-
(format "max_tokens: %s" chatgpt-max-tokens) "\n"
260-
(format "temperature: %s" chatgpt-temperature) "\n"
261-
(format "user: %s" (chatgpt--get-user))))
262-
;; Register event to cancel lv window!
263-
(add-hook 'pre-command-hook #'chatgpt--pre-command-once))
277+
(when (eq major-mode 'chatgpt-mode)
278+
(lv-message
279+
(concat
280+
(format "session: %s" (cdr chatgpt-instance)) "\n"
281+
(format "history size: %s" (length chatgpt-chat-history))
282+
"\n\n"
283+
(format "prompt_tokens: %s | completion_tokens: %s | total_tokens: %s"
284+
(ht-get chatgpt-data 'prompt_tokens 0)
285+
(ht-get chatgpt-data 'completion_tokens 0)
286+
(ht-get chatgpt-data 'total_tokens 0))
287+
"\n\n"
288+
(format "model: %s" chatgpt-model) "\n"
289+
(format "max_tokens: %s" chatgpt-max-tokens) "\n"
290+
(format "temperature: %s" chatgpt-temperature) "\n"
291+
(format "user: %s" (chatgpt-user))))
292+
;; Register event to cancel lv window!
293+
(add-hook 'pre-command-hook #'chatgpt--pre-command-once)))
264294

265295
;;
266296
;;; Entry

0 commit comments

Comments
 (0)