diff --git a/Project.toml b/Project.toml index a63eb3c..92af06b 100644 --- a/Project.toml +++ b/Project.toml @@ -8,6 +8,7 @@ Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a" OpenAI = "e9f21f70-7185-4079-aca2-91159181367c" Preferences = "21216c6a-2e73-6563-6e65-726566657250" ReplMaker = "b873ce64-0db9-51f5-a568-4457d8e49576" +Term = "22787eb5-b846-44ae-b979-8e399b8463ab" [compat] Markdown = "1.6" diff --git a/src/ReplGPT.jl b/src/ReplGPT.jl index 3052189..4bda057 100644 --- a/src/ReplGPT.jl +++ b/src/ReplGPT.jl @@ -2,7 +2,11 @@ module ReplGPT import OpenAI import ReplMaker -import Markdown +import Markdown +import Term.TermMarkdown: parse_md +import Term: tprint +import Term: Panel, hLine, RenderableText +import Term.Consoles: console_width using Preferences @@ -55,6 +59,7 @@ conversation = Vector{Dict{String,String}}() function call_chatgpt(s) key = getAPIkey() + w = console_width() - 6 if !ismissing(key) userMessage = Dict("role" => "user", "content" => s) push!(conversation, userMessage) @@ -72,11 +77,18 @@ function call_chatgpt(s) responseMessage = Dict("role" => "assistant", "content" => response) push!(conversation, responseMessage) - Markdown.parse(response) + return " " * Panel( + RenderableText(parse_md(Markdown.parse(response); width=w-8); style="white on_#20232a", background="on_#20232a"); + + width=w, + background="on_#20232a", + subtitle="ChatGPT", subtitle_style="white", padding=(4, 4, 1, 1), + style = "white on_#20232a" + ) / hLine(; style="dim") |> tprint else - Markdown.parse( + parse_md( "OpenAI API key not found! Please set with `ReplGPT.setAPIkey(\"\")` or set the environment variable $(api_key_name)=", - ) + ) |> tprint end end