diff options
-rw-r--r-- | commands.go | 7 | ||||
-rw-r--r-- | ui/buffers.go | 10 |
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) |