]> git.lizzy.rs Git - micro.git/blobdiff - cmd/micro/colorscheme.go
Merge pull request #507 from NicolaiSoeborg/master
[micro.git] / cmd / micro / colorscheme.go
index 30358b2f4d69a92a2801799da4c3e6b05bcd7275..74e770181b181744a30a7d37b1b8c33df01cbb1f 100644 (file)
@@ -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