5 "github.com/go-errors/errors"
6 "github.com/mattn/go-isatty"
7 "github.com/zyedidia/tcell"
24 if _, err := os.Stat(filename); err == nil {
26 input, err = ioutil.ReadFile(filename)
33 } else if !isatty.IsTerminal(os.Stdin.Fd()) {
34 bytes, err := ioutil.ReadAll(os.Stdin)
36 fmt.Println("Error reading stdin")
44 truecolor := os.Getenv("MICRO_TRUECOLOR") == "1"
46 oldTerm := os.Getenv("TERM")
48 os.Setenv("TERM", "xterm-truecolor")
51 s, e := tcell.NewTerminfoScreen()
53 fmt.Fprintf(os.Stderr, "%v\n", e)
56 if e := s.Init(); e != nil {
57 fmt.Fprintf(os.Stderr, "%v\n", e)
62 os.Setenv("TERM", oldTerm)
66 if err := recover(); err != nil {
68 fmt.Println("Micro encountered an error:", err)
69 fmt.Print(errors.Wrap(err, 2).ErrorStack())
74 defStyle := tcell.StyleDefault.
75 Background(tcell.ColorDefault).
76 Foreground(tcell.ColorDefault)
78 if _, ok := colorscheme["default"]; ok {
79 defStyle = colorscheme["default"]
85 v := NewView(NewBuffer(string(input), filename), s)
87 // Initially everything needs to be drawn
91 v.matches = Match(v.buf.rules, v.buf, v)
97 } else if redraw == 1 {
103 event := s.PollEvent()
105 switch e := event.(type) {
106 case *tcell.EventKey:
107 if e.Key() == tcell.KeyCtrlQ {
113 redraw = v.HandleEvent(event)