summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commands.go7
-rw-r--r--ui/buffers.go10
2 files changed, 16 insertions, 1 deletions
diff --git a/commands.go b/commands.go
index 447340d..626ba00 100644
--- a/commands.go
+++ b/commands.go
@@ -2,6 +2,7 @@ package senpai
import (
"fmt"
+ "strconv"
"strings"
"time"
@@ -478,6 +479,12 @@ func (app *App) handleInput(buffer, content string) error {
func commandDoBuffer(app *App, buffer string, args []string) error {
name := args[0]
+ i, err := strconv.Atoi(name)
+ if err == nil {
+ if app.win.JumpBufferIndex(i) {
+ return nil
+ }
+ }
if !app.win.JumpBuffer(args[0]) {
return fmt.Errorf("none of the buffers match %q", name)
}
diff --git a/ui/buffers.go b/ui/buffers.go
index 94e2a4e..3f2ae4a 100644
--- a/ui/buffers.go
+++ b/ui/buffers.go
@@ -1,6 +1,8 @@
package ui
import (
+ "fmt"
+ "math"
"strings"
"time"
@@ -396,6 +398,7 @@ func (bs *BufferList) DrawVerticalBufferList(screen tcell.Screen, x0, y0, width,
screen.SetContent(x0+width, y, 0x2502, nil, st)
}
+ indexPadding := 1 + int(math.Ceil(math.Log10(float64(len(bs.list)))))
for i, b := range bs.list {
st = tcell.StyleDefault
x := x0
@@ -408,7 +411,12 @@ func (bs *BufferList) DrawVerticalBufferList(screen tcell.Screen, x0, y0, width,
if i == bs.clicked {
st = st.Reverse(true)
}
- title := truncate(b.title, width, "\u2026")
+ indexText := fmt.Sprintf("%d:", i)
+ for ; x < x0+indexPadding-len(indexText); x++ {
+ screen.SetContent(x, y, ' ', nil, tcell.StyleDefault)
+ }
+ printString(screen, &x, y, Styled(indexText, st.Foreground(tcell.ColorGrey)))
+ title := truncate(b.title, width-(x-x0), "\u2026")
printString(screen, &x, y, Styled(title, st))
if 0 < b.highlights {
st = st.Foreground(tcell.ColorRed).Reverse(true)