// 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 += " +"
}
// 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 {
// 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)
}
}
}