X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=cmd%2Fmicro%2Fcolorscheme.go;h=74e770181b181744a30a7d37b1b8c33df01cbb1f;hb=d49e366413dc8956f6b62734a6331df6632672fe;hp=30358b2f4d69a92a2801799da4c3e6b05bcd7275;hpb=8e555e60f796182c1d42c21b03fccbbedd2021bf;p=micro.git diff --git a/cmd/micro/colorscheme.go b/cmd/micro/colorscheme.go index 30358b2f..74e77018 100644 --- a/cmd/micro/colorscheme.go +++ b/cmd/micro/colorscheme.go @@ -2,7 +2,6 @@ package main import ( "fmt" - "io/ioutil" "regexp" "strconv" "strings" @@ -16,67 +15,54 @@ type Colorscheme map[string]tcell.Style // The current colorscheme var colorscheme Colorscheme -var preInstalledColors = []string{"default", "simple", "solarized", "solarized-tc", "atom-dark-tc", "monokai", "gruvbox", "zenburn", "bubblegum"} - // ColorschemeExists checks if a given colorscheme exists func ColorschemeExists(colorschemeName string) bool { - files, _ := ioutil.ReadDir(configDir + "/colorschemes") - for _, f := range files { - if f.Name() == colorschemeName+".micro" { - return true - } - } - - for _, name := range preInstalledColors { - if name == colorschemeName { - return true - } - } - - return false + return FindRuntimeFile(RTColorscheme, colorschemeName) != nil } // InitColorscheme picks and initializes the colorscheme when micro starts func InitColorscheme() { + colorscheme = make(Colorscheme) + if screen != nil { + screen.SetStyle(tcell.StyleDefault. + Foreground(tcell.ColorDefault). + Background(tcell.ColorDefault)) + } + LoadDefaultColorscheme() } // LoadDefaultColorscheme loads the default colorscheme from $(configDir)/colorschemes func LoadDefaultColorscheme() { - LoadColorscheme(globalSettings["colorscheme"].(string), configDir+"/colorschemes") + LoadColorscheme(globalSettings["colorscheme"].(string)) } // LoadColorscheme loads the given colorscheme from a directory -func LoadColorscheme(colorschemeName, dir string) { - files, _ := ioutil.ReadDir(dir) - found := false - for _, f := range files { - if f.Name() == colorschemeName+".micro" { - text, err := ioutil.ReadFile(dir + "/" + f.Name()) - if err != nil { - fmt.Println("Error loading colorscheme:", err) - continue - } - colorscheme = ParseColorscheme(string(text)) - found = true - } - } +func LoadColorscheme(colorschemeName string) { + file := FindRuntimeFile(RTColorscheme, colorschemeName) + if file == nil { + TermMessage(colorschemeName, "is not a valid colorscheme") + } else { + if data, err := file.Data(); err != nil { + TermMessage("Error loading colorscheme:", err) + } else { + colorscheme = ParseColorscheme(string(data)) + + // Default style + defStyle = tcell.StyleDefault. + Foreground(tcell.ColorDefault). + Background(tcell.ColorDefault) - for _, name := range preInstalledColors { - if name == colorschemeName { - data, err := Asset("runtime/colorschemes/" + name + ".micro") - if err != nil { - TermMessage("Unable to load pre-installed colorscheme " + name) - continue + // There may be another default style defined in the colorscheme + // In that case we should use that one + if style, ok := colorscheme["default"]; ok { + defStyle = style + } + if screen != nil { + screen.SetStyle(defStyle) } - colorscheme = ParseColorscheme(string(data)) - found = true } } - - if !found { - TermMessage(colorschemeName, "is not a valid colorscheme") - } } // ParseColorscheme parses the text definition for a colorscheme and returns the corresponding object