]> git.lizzy.rs Git - micro.git/blobdiff - cmd/micro/statusline.go
Don't draw statusline if infobar is off and in use
[micro.git] / cmd / micro / statusline.go
index c08c147aec0593870a266762ad627342122658ef..2605ef9b79413d26975ff401f6e2e883d9e657cc 100644 (file)
@@ -14,17 +14,17 @@ type Statusline struct {
 
 // Display draws the statusline to the screen
 func (sline *Statusline) Display() {
+       if messenger.hasPrompt && !GetGlobalOption("infobar").(bool) {
+               return
+       }
+
        // We'll draw the line at the lowest line in the view
-       y := sline.view.height
+       y := sline.view.Height + sline.view.y
 
-       file := sline.view.Buf.Name
-       // If the name is empty, use 'No name'
-       if file == "" {
-               file = "No name"
-       }
+       file := sline.view.Buf.GetName()
 
        // If the buffer is dirty (has been modified) write a little '+'
-       if sline.view.Buf.IsModified {
+       if sline.view.Buf.Modified() {
                file += " +"
        }
 
@@ -33,17 +33,34 @@ func (sline *Statusline) Display() {
        // We use GetVisualX() here because otherwise we get the column number in runes
        // so a '\t' is only 1, when it should be tabSize
        columnNum := strconv.Itoa(sline.view.Cursor.GetVisualX() + 1)
-       lineNum := strconv.Itoa(sline.view.Cursor.y + 1)
+       lineNum := strconv.Itoa(sline.view.Cursor.Y + 1)
 
        file += " (" + lineNum + "," + columnNum + ")"
 
        // Add the filetype
-       file += " " + sline.view.Buf.FileType
+       file += " " + sline.view.Buf.FileType()
 
-       rightText := "Ctrl-g for help "
-       if sline.view.helpOpen {
-               rightText = "Ctrl-g to close help "
+       file += " " + sline.view.Buf.Settings["fileformat"].(string)
+
+       rightText := ""
+       if len(kmenuBinding) > 0 {
+               if globalSettings["keymenu"].(bool) {
+                       rightText += kmenuBinding + ": hide bindings"
+               } else {
+                       rightText += kmenuBinding + ": show bindings"
+               }
        }
+       if len(helpBinding) > 0 {
+               if len(kmenuBinding) > 0 {
+                       rightText += ", "
+               }
+               if sline.view.Type == vtHelp {
+                       rightText += helpBinding + ": close help"
+               } else {
+                       rightText += helpBinding + ": open help"
+               }
+       }
+       rightText += " "
 
        statusLineStyle := defStyle.Reverse(true)
        if style, ok := colorscheme["statusline"]; ok {
@@ -52,13 +69,18 @@ func (sline *Statusline) Display() {
 
        // Maybe there is a unicode filename?
        fileRunes := []rune(file)
-       for x := 0; x < sline.view.width; x++ {
+       viewX := sline.view.x
+       if viewX != 0 {
+               screen.SetContent(viewX, y, ' ', nil, statusLineStyle)
+               viewX++
+       }
+       for x := 0; x < sline.view.Width; x++ {
                if x < len(fileRunes) {
-                       screen.SetContent(x, y, fileRunes[x], nil, statusLineStyle)
-               } else if x >= sline.view.width-len(rightText) && x < len(rightText)+sline.view.width-len(rightText) {
-                       screen.SetContent(x, y, []rune(rightText)[x-sline.view.width+len(rightText)], nil, statusLineStyle)
+                       screen.SetContent(viewX+x, y, fileRunes[x], nil, statusLineStyle)
+               } else if x >= sline.view.Width-len(rightText) && x < len(rightText)+sline.view.Width-len(rightText) {
+                       screen.SetContent(viewX+x, y, []rune(rightText)[x-sline.view.Width+len(rightText)], nil, statusLineStyle)
                } else {
-                       screen.SetContent(x, y, ' ', nil, statusLineStyle)
+                       screen.SetContent(viewX+x, y, ' ', nil, statusLineStyle)
                }
        }
 }