X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=internal%2Fdisplay%2Ftabwindow.go;h=c16747a3a6f50a807c7ef36b744ffc40220ecc09;hb=eff89a98a7fb16afc920cd8d26a80061378f5f46;hp=182e675d1400fa287ca0378f308dc363229a6494;hpb=31936358c16452b6cadb834fef1aed4a8241a453;p=micro.git diff --git a/internal/display/tabwindow.go b/internal/display/tabwindow.go index 182e675d..c16747a3 100644 --- a/internal/display/tabwindow.go +++ b/internal/display/tabwindow.go @@ -4,29 +4,29 @@ import ( "unicode/utf8" runewidth "github.com/mattn/go-runewidth" - "github.com/zyedidia/micro/internal/buffer" - "github.com/zyedidia/micro/internal/config" - "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" + "github.com/zyedidia/micro/v2/internal/screen" + "github.com/zyedidia/micro/v2/internal/util" ) type TabWindow struct { Names []string active int Y int - width int + Width int hscroll int } func NewTabWindow(w int, y int) *TabWindow { tw := new(TabWindow) - tw.width = w + tw.Width = w tw.Y = y return tw } func (w *TabWindow) Resize(width, height int) { - w.width = width + w.Width = width } func (w *TabWindow) LocFromVisual(vloc buffer.Loc) int { @@ -40,7 +40,7 @@ func (w *TabWindow) LocFromVisual(vloc buffer.Loc) int { } x += s x += 3 - if x >= w.width { + if x >= w.Width { break } } @@ -50,9 +50,9 @@ func (w *TabWindow) LocFromVisual(vloc buffer.Loc) int { func (w *TabWindow) Scroll(amt int) { w.hscroll += amt s := w.TotalSize() - w.hscroll = util.Clamp(w.hscroll, 0, s-w.width) + w.hscroll = util.Clamp(w.hscroll, 0, s-w.Width) - if s-w.width <= 0 { + if s-w.Width <= 0 { w.hscroll = 0 } } @@ -77,17 +77,17 @@ func (w *TabWindow) SetActive(a int) { for i, n := range w.Names { c := utf8.RuneCountInString(n) if i == a { - if x+c >= w.hscroll+w.width { - w.hscroll = util.Clamp(x+c+1-w.width, 0, s-w.width) + if x+c >= w.hscroll+w.Width { + w.hscroll = util.Clamp(x+c+1-w.Width, 0, s-w.Width) } else if x < w.hscroll { - w.hscroll = util.Clamp(x-4, 0, s-w.width) + w.hscroll = util.Clamp(x-4, 0, s-w.Width) } break } x += c + 4 } - if s-w.width <= 0 { + if s-w.Width <= 0 { w.hscroll = 0 } } @@ -96,6 +96,11 @@ func (w *TabWindow) Display() { x := -w.hscroll done := false + tabBarStyle := config.DefStyle.Reverse(true) + if style, ok := config.Colorscheme["tabbar"]; ok { + tabBarStyle = style + } + draw := func(r rune, n int) { for i := 0; i < n; i++ { rw := runewidth.RuneWidth(r) @@ -104,14 +109,14 @@ func (w *TabWindow) Display() { if j > 0 { c = ' ' } - if x == w.width-1 && !done { - screen.SetContent(w.width-1, w.Y, '>', nil, config.DefStyle.Reverse(true)) + if x == w.Width-1 && !done { + screen.SetContent(w.Width-1, w.Y, '>', nil, tabBarStyle) x++ break } else if x == 0 && w.hscroll > 0 { - screen.SetContent(0, w.Y, '<', nil, config.DefStyle.Reverse(true)) - } else if x >= 0 && x < w.width { - screen.SetContent(x, w.Y, c, nil, config.DefStyle.Reverse(true)) + screen.SetContent(0, w.Y, '<', nil, tabBarStyle) + } else if x >= 0 && x < w.Width { + screen.SetContent(x, w.Y, c, nil, tabBarStyle) } x++ } @@ -136,12 +141,12 @@ func (w *TabWindow) Display() { } else { draw(' ', 3) } - if x >= w.width { + if x >= w.Width { break } } - if x < w.width { - draw(' ', w.width-x) + if x < w.Width { + draw(' ', w.Width-x) } }