From a4eb3323dafcb290ed68f6a70327bfc3b5e39f29 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Fri, 9 Oct 2015 12:16:47 +0900 Subject: [PATCH] Fix #370 - Panic when trying to set colors when colors are disabled --- src/options.go | 9 ++++++--- src/options_test.go | 12 ++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/options.go b/src/options.go index 9d8aaa1..81fa377 100644 --- a/src/options.go +++ b/src/options.go @@ -380,8 +380,11 @@ func parseTiebreak(str string) tiebreak { } func dupeTheme(theme *curses.ColorTheme) *curses.ColorTheme { - dupe := *theme - return &dupe + if theme != nil { + dupe := *theme + return &dupe + } + return nil } func parseTheme(defaultTheme *curses.ColorTheme, str string) *curses.ColorTheme { @@ -402,7 +405,7 @@ func parseTheme(defaultTheme *curses.ColorTheme, str string) *curses.ColorTheme } // Color is disabled if theme == nil { - errorExit("colors disabled; cannot customize colors") + continue } pair := strings.Split(str, ":") diff --git a/src/options_test.go b/src/options_test.go index 1f96f78..1e9ede4 100644 --- a/src/options_test.go +++ b/src/options_test.go @@ -316,3 +316,15 @@ func TestColorSpec(t *testing.T) { t.Errorf("using default colors") } } + +func TestParseNilTheme(t *testing.T) { + var theme *curses.ColorTheme + newTheme := parseTheme(theme, "prompt:12") + if newTheme != nil { + t.Errorf("color is disabled. keep it that way.") + } + newTheme = parseTheme(theme, "prompt:12,dark,prompt:13") + if newTheme.Prompt != 13 { + t.Errorf("color should now be enabled and customized") + } +}