peco.peco/buffer/interface.go
2020-05-28 08:29:45 +09:00

35 lines
696 B
Go

package buffer
import (
"sync"
"github.com/peco/peco/line"
)
// Buffer interface is used for containers for lines to be
// processed by peco.
type Buffer interface {
LinesInRange(int, int) []line.Line
LineAt(int) (line.Line, error)
Size() int
}
// Filtered holds a "filtered" buffer. It holds a reference to
// the source buffer (note: should be immutable) and a list of indices
// into the source buffer
type Filtered struct {
maxcols int
src Buffer
selection []int // maps from our index to src's index
}
// Memory is an implementation of Buffer
type Memory struct {
done chan struct{}
lines []line.Line
mutex sync.RWMutex
PeriodicFunc func()
}