} else {
str += " "
}
- str += t.views[t.CurView].Buf.GetName()
+ buf := t.views[t.CurView].Buf
+ str += buf.GetName()
+ if buf.IsModified {
+ str += " +"
+ }
if i == curTab {
str += "]"
} else {
str += " "
}
- indicies[len(str)-1] = i + 1
+ indicies[Count(str)-1] = i + 1
str += " "
}
return str, indicies
return false
}
str, indicies := TabbarString()
- if x + tabBarOffset >= len(str) {
+ if x+tabBarOffset >= len(str) {
return false
}
var tabnum int
}
sort.Ints(keys)
for _, k := range keys {
- if x + tabBarOffset <= k {
+ if x+tabBarOffset <= k {
tabnum = indicies[k] - 1
break
}
if tooWide == true {
// first we have to work out where the selected tab is
// out of the total length of the tab bar. this is done
- // by extracting the hit-areas from the indicies map
+ // by extracting the hit-areas from the indicies map
// that was constructed by `TabbarString()`
var keys []int
for offset := range indicies {
rightBuffer := currentTabOffset + (centeringOffset / 2)
// check to make sure we haven't overshot the bounds of the string,
- // if we have, then take that remainder and put it on the left side
+ // if we have, then take that remainder and put it on the left side
overshotRight := rightBuffer - len(fileRunes)
if overshotRight > 0 {
leftBuffer = leftBuffer + overshotRight
} else {
rightBuffer = leftBuffer + (w - 2)
}
-
- if rightBuffer > len(fileRunes) - 1 {
+
+ if rightBuffer > len(fileRunes)-1 {
rightBuffer = len(fileRunes) - 1
}
- // construct a new buffer of text to put the
+ // construct a new buffer of text to put the
// newly formatted tab bar text into.
var displayText []rune
}
// if there is more text to the right of the right-most
// column in the tab bar text, then indicate there are more
- // tabs to ther right by displaying a "+"
- if rightBuffer < len(fileRunes) - 1 {
+ // tabs to the right by displaying a "+"
+ if rightBuffer < len(fileRunes)-1 {
displayText = append(displayText, '+')
}
// now store the offset from zero of the left-most text
- // that is being displayed. This is to ensure that when
+ // that is being displayed. This is to ensure that when
// clicking on the tab bar, the correct tab gets selected.
tabBarOffset = leftBuffer
}
// iterate over the width of the terminal display and for each column,
- // write a character into the tab display area with the appropraite style.
+ // write a character into the tab display area with the appropriate style.
for x := 0; x < w; x++ {
if x < len(fileRunes) {
screen.SetContent(x, 0, fileRunes[x], nil, tabBarStyle)