mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2024-06-21 00:22:21 +00:00
Instead of notifying the event coordinator (EventBox) whenever a new line is arrived, start a background goroutine that periodically does the task. Atomic.StoreInt32 is much cheaper than mutex synchronization that happens during EventBox update.
83 lines
1.9 KiB
Go
83 lines
1.9 KiB
Go
package fzf
|
|
|
|
import (
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/junegunn/fzf/src/util"
|
|
)
|
|
|
|
const (
|
|
// Current version
|
|
version = "0.16.11"
|
|
|
|
// Core
|
|
coordinatorDelayMax time.Duration = 100 * time.Millisecond
|
|
coordinatorDelayStep time.Duration = 10 * time.Millisecond
|
|
|
|
// Reader
|
|
readerBufferSize = 64 * 1024
|
|
readerPollIntervalMin = 10 * time.Millisecond
|
|
readerPollIntervalStep = 5 * time.Millisecond
|
|
readerPollIntervalMax = 50 * time.Millisecond
|
|
|
|
// Terminal
|
|
initialDelay = 20 * time.Millisecond
|
|
initialDelayTac = 100 * time.Millisecond
|
|
spinnerDuration = 200 * time.Millisecond
|
|
|
|
// Matcher
|
|
numPartitionsMultiplier = 8
|
|
maxPartitions = 32
|
|
progressMinDuration = 200 * time.Millisecond
|
|
|
|
// Capacity of each chunk
|
|
chunkSize int = 100
|
|
|
|
// Pre-allocated memory slices to minimize GC
|
|
slab16Size int = 100 * 1024 // 200KB * 32 = 12.8MB
|
|
slab32Size int = 2048 // 8KB * 32 = 256KB
|
|
|
|
// Do not cache results of low selectivity queries
|
|
queryCacheMax int = chunkSize / 5
|
|
|
|
// Not to cache mergers with large lists
|
|
mergerCacheMax int = 100000
|
|
|
|
// History
|
|
defaultHistoryMax int = 1000
|
|
|
|
// Jump labels
|
|
defaultJumpLabels string = "asdfghjklqwertyuiopzxcvbnm1234567890ASDFGHJKLQWERTYUIOPZXCVBNM`~;:,<.>/?'\"!@#$%^&*()[{]}-_=+"
|
|
)
|
|
|
|
var defaultCommand string
|
|
|
|
func init() {
|
|
if !util.IsWindows() {
|
|
defaultCommand = `command find -L . -mindepth 1 \( -path '*/\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \) -prune -o -type f -print -o -type l -print 2> /dev/null | cut -b3-`
|
|
} else if os.Getenv("TERM") == "cygwin" {
|
|
defaultCommand = `sh -c "command find -L . -mindepth 1 -path '*/\.*' -prune -o -type f -print -o -type l -print 2> /dev/null | cut -b3-"`
|
|
} else {
|
|
defaultCommand = `dir /s/b`
|
|
}
|
|
}
|
|
|
|
// fzf events
|
|
const (
|
|
EvtReadNew util.EventType = iota
|
|
EvtReadFin
|
|
EvtSearchNew
|
|
EvtSearchProgress
|
|
EvtSearchFin
|
|
EvtHeader
|
|
EvtReady
|
|
)
|
|
|
|
const (
|
|
exitOk = 0
|
|
exitNoMatch = 1
|
|
exitError = 2
|
|
exitInterrupt = 130
|
|
)
|