X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=internal%2Fdisplay%2Fstatusline.go;h=5c5f551280d1e4b972979b4c1eb3c255a666cbd9;hb=c7e72220ddbda134dc0b248c8670a6ab5fa69af7;hp=c139c8c6ab46f16af930fecc62b8f8632319a5a0;hpb=741f494841bedfa6d6ef20a017ee91332974002e;p=micro.git diff --git a/internal/display/statusline.go b/internal/display/statusline.go index c139c8c6..5c5f5512 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -3,21 +3,19 @@ package display import ( "bytes" "fmt" - "path" "regexp" "strconv" "strings" - "unicode/utf8" luar "layeh.com/gopher-luar" runewidth "github.com/mattn/go-runewidth" lua "github.com/yuin/gopher-lua" - "github.com/zyedidia/micro/internal/buffer" - "github.com/zyedidia/micro/internal/config" - ulua "github.com/zyedidia/micro/internal/lua" - "github.com/zyedidia/micro/internal/screen" - "github.com/zyedidia/micro/internal/util" + "github.com/zyedidia/micro/v2/internal/buffer" + "github.com/zyedidia/micro/v2/internal/config" + ulua "github.com/zyedidia/micro/v2/internal/lua" + "github.com/zyedidia/micro/v2/internal/screen" + "github.com/zyedidia/micro/v2/internal/util" ) // StatusLine represents the information line at the bottom @@ -32,9 +30,6 @@ type StatusLine struct { var statusInfo = map[string]func(*buffer.Buffer) string{ "filename": func(b *buffer.Buffer) string { - if b.Settings["basename"].(bool) { - return path.Base(b.GetName()) - } return b.GetName() }, "line": func(b *buffer.Buffer) string { @@ -47,6 +42,9 @@ var statusInfo = map[string]func(*buffer.Buffer) string{ if b.Modified() { return "+ " } + if b.Type.Readonly { + return "[ro] " + } return "" }, } @@ -169,34 +167,36 @@ func (s *StatusLine) Display() { statusLineStyle = style } - leftLen := util.StringWidth(leftText, utf8.RuneCount(leftText), 1) - rightLen := util.StringWidth(rightText, utf8.RuneCount(rightText), 1) + leftLen := util.StringWidth(leftText, util.CharacterCount(leftText), 1) + rightLen := util.StringWidth(rightText, util.CharacterCount(rightText), 1) winX := s.win.X for x := 0; x < s.win.Width; x++ { if x < leftLen { - r, size := utf8.DecodeRune(leftText) + r, combc, size := util.DecodeCharacter(leftText) leftText = leftText[size:] rw := runewidth.RuneWidth(r) for j := 0; j < rw; j++ { c := r if j > 0 { c = ' ' + combc = nil x++ } - screen.SetContent(winX+x, y, c, nil, statusLineStyle) + screen.SetContent(winX+x, y, c, combc, statusLineStyle) } } else if x >= s.win.Width-rightLen && x < rightLen+s.win.Width-rightLen { - r, size := utf8.DecodeRune(rightText) + r, combc, size := util.DecodeCharacter(rightText) rightText = rightText[size:] rw := runewidth.RuneWidth(r) for j := 0; j < rw; j++ { c := r if j > 0 { c = ' ' + combc = nil x++ } - screen.SetContent(winX+x, y, c, nil, statusLineStyle) + screen.SetContent(winX+x, y, c, combc, statusLineStyle) } } else { screen.SetContent(winX+x, y, ' ', nil, statusLineStyle)