]> git.lizzy.rs Git - micro.git/commitdiff
Add messaging system
authorZachary Yedidia <zyedidia@gmail.com>
Wed, 23 Mar 2016 14:28:12 +0000 (10:28 -0400)
committerZachary Yedidia <zyedidia@gmail.com>
Wed, 23 Mar 2016 14:28:12 +0000 (10:28 -0400)
src/buffer.go
src/message.go [new file with mode: 0644]
src/micro.go
src/view.go

index 16cdfca2c5d358cc70f630e400e1286783719099..fa5b0dfe976c40ad1cd8469162a5cf64236e15bd 100644 (file)
@@ -60,8 +60,10 @@ func (b *Buffer) Save() error {
 
 // SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist
 func (b *Buffer) SaveAs(filename string) error {
-       b.savedText = b.text
        err := ioutil.WriteFile(filename, []byte(b.text), 0644)
+       if err == nil {
+               b.savedText = b.text
+       }
        return err
 }
 
diff --git a/src/message.go b/src/message.go
new file mode 100644 (file)
index 0000000..908987c
--- /dev/null
@@ -0,0 +1,39 @@
+package main
+
+import (
+       "github.com/zyedidia/tcell"
+)
+
+var (
+       curMessage string
+       curStyle   tcell.Style
+)
+
+func Message(msg string) {
+       curMessage = msg
+       curStyle = tcell.StyleDefault
+
+       if _, ok := colorscheme["message"]; ok {
+               curStyle = colorscheme["message"]
+       }
+}
+
+func Error(msg string) {
+       curMessage = msg
+       curStyle = tcell.StyleDefault.
+               Foreground(tcell.ColorBlack).
+               Background(tcell.ColorRed)
+
+       if _, ok := colorscheme["error-message"]; ok {
+               curStyle = colorscheme["error-message"]
+       }
+}
+
+func DisplayMessage(s tcell.Screen) {
+       _, h := s.Size()
+
+       runes := []rune(curMessage)
+       for x := 0; x < len(runes); x++ {
+               s.SetContent(x, h-1, runes[x], nil, curStyle)
+       }
+}
index f4b0190b55e39df03449f4c4450b57b068da5339..3ffa082154ead7b578195ea6692106dbdca30c18 100644 (file)
@@ -84,18 +84,22 @@ func main() {
 
        v := NewView(NewBuffer(string(input), filename), s)
 
+       Message("welcome to micro")
+
        // Initially everything needs to be drawn
        redraw := 2
        for {
                if redraw == 2 {
                        v.matches = Match(v.buf.rules, v.buf, v)
                        s.Clear()
+                       DisplayMessage(s)
                        v.Display()
                        v.cursor.Display()
                        v.sl.Display()
                        s.Show()
                } else if redraw == 1 {
                        v.cursor.Display()
+                       DisplayMessage(s)
                        v.sl.Display()
                        s.Show()
                }
index bf759aa23abd1f6d3d2529f88f8d6ad60e453dec..971d5a540a3f9486d43b5ebf181bbeb0c6e211e9 100644 (file)
@@ -191,7 +191,7 @@ func (v *View) HandleEvent(event tcell.Event) int {
                case tcell.KeyCtrlS:
                        err := v.buf.Save()
                        if err != nil {
-                               // Error!
+                               Error(err.Error())
                        }
                        // Need to redraw the status line
                        ret = 1