package readline

// FindMode defines how the autocomplete suggestions display
type FindMode int

const (
	// HistoryFind - Searching through history
	HistoryFind = iota
	// CompletionFind - Searching through completion items
	CompletionFind
	// RegisterFind - The user can complete/search registers
	RegisterFind
)

func (rl *Instance) backspaceTabFind() {
	if len(rl.tfLine) > 0 {
		rl.tfLine = rl.tfLine[:len(rl.tfLine)-1]
	}
	rl.updateTabFind([]rune{})
}

// Filter and refresh (print) a list of completions. The caller should have reset
// the virtual completion system before, so that should not clash with this.
func (rl *Instance) updateTabFind(r []rune) {

	rl.tfLine = append(rl.tfLine, r...)

	// The search regex is common to all search modes
	rl.search = string(rl.tfLine)

	// We update and print
	rl.clearHelpers()
	rl.getTabCompletion()
	rl.renderHelpers()
}

func (rl *Instance) resetTabFind() {
	rl.modeTabFind = false
	// rl.modeAutoFind = false // Added, because otherwise it gets stuck on search completions

	rl.mainHist = false
	rl.tfLine = []rune{}

	rl.clearHelpers()
	rl.resetTabCompletion()

	// If we were browsing history, we don't load the completions again
	// if rl.searchMode != HistoryFind {
	rl.getTabCompletion()
	// }

	rl.renderHelpers()
}