From 7f47f0b5e0503783b2ec2e81305c334675e87a4c Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Thu, 9 Mar 2023 13:23:40 -0500 Subject: [PATCH] fix(renderer): use termenv default renderer Creating a _new_ global termenv output clashes with the default global termenv output leading the terminal to block and freeze. Share the default termenv output with the global default lipgloss renderer. --- renderer.go | 7 +++++-- style.go | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/renderer.go b/renderer.go index b5e115d1..4bea8374 100644 --- a/renderer.go +++ b/renderer.go @@ -2,12 +2,15 @@ package lipgloss import ( "io" - "os" "github.com/muesli/termenv" ) -var renderer = NewRenderer(os.Stdout) +// We're manually creating the struct here to avoid initializing the output and +// query the terminal multiple times. +var renderer = &Renderer{ + output: termenv.DefaultOutput(), +} // Renderer is a lipgloss terminal renderer. type Renderer struct { diff --git a/style.go b/style.go index 54f6d39b..e94b8670 100644 --- a/style.go +++ b/style.go @@ -173,7 +173,7 @@ func (s Style) Inherit(i Style) Style { // Render applies the defined style formatting to a given string. func (s Style) Render(strs ...string) string { if s.r == nil { - s.r = DefaultRenderer() + s.r = renderer } if s.value != "" { strs = append([]string{s.value}, strs...)