fzf

package
v0.67.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 16, 2025 License: MIT, MIT Imports: 36 Imported by: 29

Documentation

Overview

Package fzf implements fzf, a command-line fuzzy finder.

Index

Constants

View Source
const (
	EvtReadNew util.EventType = iota
	EvtReadFin
	EvtSearchNew
	EvtSearchProgress
	EvtSearchFin
	EvtHeader
	EvtReady
	EvtQuit
)

fzf events

View Source
const (
	ExitOk        = 0
	ExitNoMatch   = 1
	ExitError     = 2
	ExitBecome    = 126
	ExitInterrupt = 130
)
View Source
const Usage = `` /* 12696-byte string literal not displayed */

Variables

This section is empty.

Functions

func CountItems

func CountItems(cs []*Chunk) int

CountItems returns the total number of Items

func GetLastDelimiter added in v0.67.0

func GetLastDelimiter(str string, delimiter Delimiter) string

func JoinTokens added in v0.60.0

func JoinTokens(tokens []Token) string

JoinTokens concatenates the tokens into a single string

func RangesToString added in v0.58.0

func RangesToString(ranges []Range) string

func Run

func Run(opts *Options) (int, error)

Run starts fzf

func StripLastDelimiter added in v0.60.0

func StripLastDelimiter(str string, delimiter Delimiter) string

StripLastDelimiter removes the trailing delimiter and whitespaces

func WriteTemporaryFile

func WriteTemporaryFile(data []string, printSep string) string

Types

type ByOrder

type ByOrder []Offset

ByOrder is for sorting substring offsets

func (ByOrder) Len

func (a ByOrder) Len() int

func (ByOrder) Less

func (a ByOrder) Less(i, j int) bool

func (ByOrder) Swap

func (a ByOrder) Swap(i, j int)

type ByRelevance

type ByRelevance []Result

ByRelevance is for sorting Items

func (ByRelevance) Len

func (a ByRelevance) Len() int

func (ByRelevance) Less

func (a ByRelevance) Less(i, j int) bool

func (ByRelevance) Swap

func (a ByRelevance) Swap(i, j int)

type ByRelevanceTac

type ByRelevanceTac []Result

ByRelevanceTac is for sorting Items

func (ByRelevanceTac) Len

func (a ByRelevanceTac) Len() int

func (ByRelevanceTac) Less

func (a ByRelevanceTac) Less(i, j int) bool

func (ByRelevanceTac) Swap

func (a ByRelevanceTac) Swap(i, j int)

type Case

type Case int

Case denotes case-sensitivity of search

const (
	CaseSmart Case = iota
	CaseIgnore
	CaseRespect
)

Case-sensitivities

type Chunk

type Chunk struct {
	// contains filtered or unexported fields
}

Chunk is a list of Items whose size has the upper limit of chunkSize

func (*Chunk) IsFull

func (c *Chunk) IsFull() bool

IsFull returns true if the Chunk is full

type ChunkCache

type ChunkCache struct {
	// contains filtered or unexported fields
}

ChunkCache associates Chunk and query string to lists of items

func NewChunkCache

func NewChunkCache() *ChunkCache

NewChunkCache returns a new ChunkCache

func (*ChunkCache) Add

func (cc *ChunkCache) Add(chunk *Chunk, key string, list []Result)

Add adds the list to the cache

func (*ChunkCache) Clear

func (cc *ChunkCache) Clear()

func (*ChunkCache) Lookup

func (cc *ChunkCache) Lookup(chunk *Chunk, key string) []Result

Lookup is called to lookup ChunkCache

func (*ChunkCache) Search

func (cc *ChunkCache) Search(chunk *Chunk, key string) []Result

type ChunkList

type ChunkList struct {
	// contains filtered or unexported fields
}

ChunkList is a list of Chunks

func NewChunkList

func NewChunkList(cache *ChunkCache, trans ItemBuilder) *ChunkList

NewChunkList returns a new ChunkList

func (*ChunkList) Clear

func (cl *ChunkList) Clear()

Clear clears the data

func (*ChunkList) Push

func (cl *ChunkList) Push(data []byte) bool

Push adds the item to the list

func (*ChunkList) Snapshot

func (cl *ChunkList) Snapshot(tail int) ([]*Chunk, int, bool)

Snapshot returns immutable snapshot of the ChunkList

type Delimiter

type Delimiter struct {
	// contains filtered or unexported fields
}

Delimiter for tokenizing the input

func (Delimiter) IsAwk added in v0.60.0

func (d Delimiter) IsAwk() bool

IsAwk returns true if the delimiter is an AWK-style delimiter

func (Delimiter) String

func (d Delimiter) String() string

String returns the string representation of a Delimiter.

type History

type History struct {
	// contains filtered or unexported fields
}

History struct represents input history

func NewHistory

func NewHistory(path string, maxSize int) (*History, error)

NewHistory returns the pointer to a new History struct

type Item

type Item struct {
	// contains filtered or unexported fields
}

Item represents each input line. 56 bytes.

func (*Item) AsString

func (item *Item) AsString(stripAnsi bool) string

AsString returns the original string

func (*Item) Colors

func (item *Item) Colors() []ansiOffset

Colors returns ansiOffsets of the Item

func (*Item) Index

func (item *Item) Index() int32

Index returns ordinal index of the Item

func (*Item) TrimLength

func (item *Item) TrimLength() uint16

type ItemBuilder

type ItemBuilder func(*Item, []byte) bool

ItemBuilder is a closure type that builds Item object from byte array

type MatchRequest

type MatchRequest struct {
	// contains filtered or unexported fields
}

MatchRequest represents a search request

type MatchResult added in v0.66.0

type MatchResult struct {
	// contains filtered or unexported fields
}

type Matcher

type Matcher struct {
	// contains filtered or unexported fields
}

Matcher is responsible for performing search

func NewMatcher

func NewMatcher(cache *ChunkCache, patternBuilder func([]rune) *Pattern,
	sort bool, tac bool, eventBox *util.EventBox, revision revision) *Matcher

NewMatcher returns a new Matcher

func (*Matcher) Loop

func (m *Matcher) Loop()

Loop puts Matcher in action

func (*Matcher) Reset

func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool, final bool, sort bool, revision revision)

Reset is called to interrupt/signal the ongoing search

func (*Matcher) Stop

func (m *Matcher) Stop()

type Merger

type Merger struct {
	// contains filtered or unexported fields
}

Merger holds a set of locally sorted lists of items and provides the view of a single, globally-sorted list

func EmptyMerger

func EmptyMerger(revision revision) *Merger

EmptyMerger is a Merger with no data

func NewMerger

func NewMerger(pattern *Pattern, lists [][]Result, sorted bool, tac bool, revision revision, minIndex int32, maxIndex int32) *Merger

NewMerger returns a new Merger

func PassMerger

func PassMerger(chunks *[]*Chunk, tac bool, revision revision) *Merger

PassMerger returns a new Merger that simply returns the items in the original order

func (*Merger) FindIndex

func (mg *Merger) FindIndex(itemIndex int32) int

FindIndex returns the index of the item with the given item index

func (*Merger) First

func (mg *Merger) First() Result

func (*Merger) Get

func (mg *Merger) Get(idx int) Result

Get returns the pointer to the Result object indexed by the given integer

func (*Merger) Length

func (mg *Merger) Length() int

Length returns the number of items

func (*Merger) Revision

func (mg *Merger) Revision() revision

Revision returns revision number

func (*Merger) ToMap added in v0.66.0

func (mg *Merger) ToMap() map[int32]Result

type Offset

type Offset [2]int32

Offset holds two 32-bit integers denoting the offsets of a matched substring

type Options

type Options struct {
	Input             chan string
	Output            chan string
	NoWinpty          bool
	Tmux              *tmuxOptions
	ForceTtyIn        bool
	ProxyScript       string
	Bash              bool
	Zsh               bool
	Fish              bool
	Man               bool
	Fuzzy             bool
	FuzzyAlgo         algo.Algo
	Scheme            string
	Extended          bool
	Phony             bool
	Inputless         bool
	Case              Case
	Normalize         bool
	Nth               []Range
	FreezeLeft        int
	FreezeRight       int
	WithNth           func(Delimiter) func([]Token, int32) string
	AcceptNth         func(Delimiter) func([]Token, int32) string
	Delimiter         Delimiter
	Sort              int
	Raw               bool
	Track             trackOption
	Tac               bool
	Tail              int
	Criteria          []criterion
	Multi             int
	Ansi              bool
	Mouse             bool
	BaseTheme         *tui.ColorTheme
	Theme             *tui.ColorTheme
	Black             bool
	Bold              bool
	Height            heightSpec
	MinHeight         int
	Layout            layoutType
	Cycle             bool
	Wrap              bool
	WrapSign          *string
	MultiLine         bool
	CursorLine        bool
	KeepRight         bool
	Hscroll           bool
	HscrollOff        int
	ScrollOff         int
	FileWord          bool
	InfoStyle         infoStyle
	InfoPrefix        string
	InfoCommand       string
	Ghost             string
	Separator         *string
	JumpLabels        string
	Prompt            string
	Gutter            *string
	GutterRaw         *string
	Pointer           *string
	Marker            *string
	MarkerMulti       *[3]string
	Query             string
	Select1           bool
	Exit0             bool
	Filter            *string
	ToggleSort        bool
	Expect            map[tui.Event]string
	Keymap            map[tui.Event][]*action
	Preview           previewOpts
	PrintQuery        bool
	ReadZero          bool
	Printer           func(string)
	PrintSep          string
	Sync              bool
	History           *History
	Header            []string
	HeaderLines       int
	HeaderFirst       bool
	Footer            []string
	Gap               int
	GapLine           *string
	Ellipsis          *string
	Scrollbar         *string
	Margin            [4]sizeSpec
	Padding           [4]sizeSpec
	BorderShape       tui.BorderShape
	ListBorderShape   tui.BorderShape
	InputBorderShape  tui.BorderShape
	HeaderBorderShape tui.BorderShape
	HeaderLinesShape  tui.BorderShape
	FooterBorderShape tui.BorderShape
	InputLabel        labelOpts
	HeaderLabel       labelOpts
	FooterLabel       labelOpts
	BorderLabel       labelOpts
	ListLabel         labelOpts
	PreviewLabel      labelOpts
	Unicode           bool
	Ambidouble        bool
	Tabstop           int
	WithShell         string
	ListenAddr        *listenAddress
	Unsafe            bool
	ClearOnExit       bool
	WalkerOpts        walkerOpts
	WalkerRoot        []string
	WalkerSkip        []string
	Version           bool
	Help              bool
	CPUProfile        string
	MEMProfile        string
	BlockProfile      string
	MutexProfile      string
	TtyDefault        string
}

Options stores the values of command-line options

func ParseOptions

func ParseOptions(useDefaults bool, args []string) (*Options, error)

ParseOptions parses command-line options

type Pattern

type Pattern struct {
	// contains filtered or unexported fields
}

Pattern represents search pattern

func BuildPattern

func BuildPattern(cache *ChunkCache, patternCache map[string]*Pattern, fuzzy bool, fuzzyAlgo algo.Algo, extended bool, caseMode Case, normalize bool, forward bool,
	withPos bool, cacheable bool, nth []Range, delimiter Delimiter, revision revision, runes []rune, denylist map[int32]struct{}) *Pattern

BuildPattern builds Pattern object from the given arguments

func (*Pattern) AsString

func (p *Pattern) AsString() string

AsString returns the search query in string type

func (*Pattern) CacheKey

func (p *Pattern) CacheKey() string

CacheKey is used to build string to be used as the key of result cache

func (*Pattern) IsEmpty

func (p *Pattern) IsEmpty() bool

IsEmpty returns true if the pattern is effectively empty

func (*Pattern) Match

func (p *Pattern) Match(chunk *Chunk, slab *util.Slab) []Result

Match returns the list of matches Items in the given Chunk

func (*Pattern) MatchItem

func (p *Pattern) MatchItem(item *Item, withPos bool, slab *util.Slab) (*Result, []Offset, *[]int)

MatchItem returns true if the Item is a match

type Range

type Range struct {
	// contains filtered or unexported fields
}

Range represents nth-expression

func ParseRange

func ParseRange(str *string) (Range, bool)

ParseRange parses nth-expression and returns the corresponding Range object

func (Range) IsFull added in v0.58.0

func (r Range) IsFull() bool

type Reader

type Reader struct {
	// contains filtered or unexported fields
}

Reader reads from command or standard input

func NewReader

func NewReader(pusher func([]byte) bool, eventBox *util.EventBox, executor *util.Executor, delimNil bool, wait bool) *Reader

NewReader returns new Reader object

func (*Reader) ReadSource

func (r *Reader) ReadSource(inputChan chan string, roots []string, opts walkerOpts, ignores []string, initCmd string, initEnv []string, readyChan chan bool)

ReadSource reads data from the default command or from standard input

type Result

type Result struct {
	// contains filtered or unexported fields
}

func (*Result) Index

func (result *Result) Index() int32

Index returns ordinal index of the Item

type Status

type Status struct {
	Reading    bool         `json:"reading"`
	Progress   int          `json:"progress"`
	Query      string       `json:"query"`
	Position   int          `json:"position"`
	Sort       bool         `json:"sort"`
	TotalCount int          `json:"totalCount"`
	MatchCount int          `json:"matchCount"`
	Current    *StatusItem  `json:"current"`
	Matches    []StatusItem `json:"matches"`
	Selected   []StatusItem `json:"selected"`
}

type StatusItem

type StatusItem struct {
	Index int    `json:"index"`
	Text  string `json:"text"`
}

type Terminal

type Terminal struct {
	// contains filtered or unexported fields
}

Terminal represents terminal input/output

func NewTerminal

func NewTerminal(opts *Options, eventBox *util.EventBox, executor *util.Executor) (*Terminal, error)

NewTerminal returns new Terminal object

func (*Terminal) Input

func (t *Terminal) Input() (bool, []rune)

Input returns current query string

func (*Terminal) Loop

func (t *Terminal) Loop() error

Loop is called to start Terminal I/O

func (*Terminal) MaxFitAndPad

func (t *Terminal) MaxFitAndPad() (int, int)

func (*Terminal) UpdateCount

func (t *Terminal) UpdateCount(cnt int, final bool, failedCommand *string)

UpdateCount updates the count information

func (*Terminal) UpdateHeader

func (t *Terminal) UpdateHeader(header []string)

UpdateHeader updates the header

func (*Terminal) UpdateList

func (t *Terminal) UpdateList(result MatchResult)

UpdateList updates Merger to display the list

func (*Terminal) UpdateProgress

func (t *Terminal) UpdateProgress(progress float32)

UpdateProgress updates the search progress

type Token

type Token struct {
	// contains filtered or unexported fields
}

Token contains the tokenized part of the strings and its prefix length

func Tokenize

func Tokenize(text string, delimiter Delimiter) []Token

Tokenize tokenizes the given string with the delimiter

func Transform

func Transform(tokens []Token, withNth []Range) []Token

Transform is used to transform the input when --with-nth option is given

func (Token) String

func (t Token) String() string

String returns the string representation of a Token.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL