From 301d3bcf30582c4da85b19a732d152dc08bbdaf3 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 20 Mar 2020 18:39:16 +0100 Subject: [PATCH] Don't determine auto style on init The automatic style configuration will now only be determined, when initialized with the WithAutoStyle renderer option. --- glamour.go | 14 ++++++++++++++ glamour_test.go | 2 +- styles.go | 15 --------------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/glamour.go b/glamour.go index d151aa5..386ff3b 100644 --- a/glamour.go +++ b/glamour.go @@ -111,6 +111,20 @@ func WithStandardStyle(style string) TermRendererOption { } } +// WithAutoStyle sets a TermRenderer's styles with either the standard dark +// or light style, depending on the terminal's background color at run-time. +func WithAutoStyle() TermRendererOption { + return func(tr *TermRenderer) error { + style := LightStyleConfig + if termenv.HasDarkBackground() { + style = DarkStyleConfig + } + + tr.ansiOptions.Styles = style + return nil + } +} + // WithStylePath sets a TermRenderer's style from stylePath. stylePath is first // interpreted as a filename. If no such file exists, it is re-interpreted as a // standard style. diff --git a/glamour_test.go b/glamour_test.go index f3ce372..9e49c5a 100644 --- a/glamour_test.go +++ b/glamour_test.go @@ -92,7 +92,7 @@ func TestTermRenderer(t *testing.T) { func TestStyles(t *testing.T) { _, err := NewTermRenderer( - WithStandardStyle("auto"), + WithAutoStyle(), ) if err != nil { t.Fatal(err) diff --git a/styles.go b/styles.go index ffc29ad..12640ee 100644 --- a/styles.go +++ b/styles.go @@ -3,16 +3,10 @@ package glamour //go:generate go run ./internal/generate-style-json import ( - "github.com/muesli/termenv" - "github.com/charmbracelet/glamour/ansi" ) var ( - // AutoStyleConfig is either pointing to DarkStyleConfig or LightStyleConfig - // depending on the background color of the terminal glamour is run in - AutoStyleConfig *ansi.StyleConfig - // ASCIIStyleConfig uses only ASCII characters. ASCIIStyleConfig = ansi.StyleConfig{ Document: ansi.StyleBlock{ @@ -664,12 +658,3 @@ var ( func boolPtr(b bool) *bool { return &b } func stringPtr(s string) *string { return &s } func uintPtr(u uint) *uint { return &u } - -func init() { - AutoStyleConfig = &LightStyleConfig - if termenv.HasDarkBackground() { - AutoStyleConfig = &DarkStyleConfig - } - - DefaultStyles["auto"] = AutoStyleConfig -}