]> git.lizzy.rs Git - micro.git/blobdiff - internal/display/statusline.go
Add scrollbar color group (#1840)
[micro.git] / internal / display / statusline.go
index c139c8c6ab46f16af930fecc62b8f8632319a5a0..5c5f551280d1e4b972979b4c1eb3c255a666cbd9 100644 (file)
@@ -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)