func SetHintHandler(h func(input string) string) {
	linenoise.SetHintHandler(h)
}
SetHintHandler adds function for input hints
package terminal
import (
	"fmt"
	"os"
	"strings"
	"unicode/utf8"
	"pkg.re/essentialkaos/go-linenoise.v3"
	"pkg.re/essentialkaos/ek.v12/ansi"
	"pkg.re/essentialkaos/ek.v12/fmtc"
	"pkg.re/essentialkaos/ek.v12/fsutil"
)
var ErrKillSignal = linenoise.ErrKillSignal
var Prompt = "> "
var MaskSymbol = "*"
var MaskSymbolColorTag = ""
var tmux int8
func ReadUI(title string, nonEmpty bool) (string, error) {
	return readUserInput(title, nonEmpty, false)
}
func ReadAnswer(title string, defaultAnswers ...string) (bool, error) {
	var defaultAnswer string
	if len(defaultAnswers) != 0 {
		defaultAnswer = defaultAnswers[0]
	}
	for {
		answer, err := readUserInput(
			getAnswerTitle(title, defaultAnswer), false, false,
		)
		if err != nil {
			return false, err
		}
		if answer == "" {
			answer = defaultAnswer
		}
		switch strings.ToUpper(answer) {
		case "Y":
			return true, nil
		case "N":
			return false, nil
		default:
			PrintWarnMessage("\nPlease enter Y or N\n")
		}
	}
}
func ReadPassword(title string, nonEmpty bool) (string, error) {
	return readUserInput(title, nonEmpty, true)
}
func PrintErrorMessage(message string, args ...interface{}) {
	if len(args) == 0 {
		fmtc.Fprintf(os.Stderr, "{r}%s{!}\n", message)
	} else {
		fmtc.Fprintf(os.Stderr, "{r}%s{!}\n", fmt.Sprintf(message, args...))
	}
}
func PrintWarnMessage(message string, args ...interface{}) {
	if len(args) == 0 {
		fmtc.Fprintf(os.Stderr, "{y}%s{!}\n", message)
	} else {
		fmtc.Fprintf(os.Stderr, "{y}%s{!}\n", fmt.Sprintf(message, args...))
	}
}
func PrintActionMessage(message string) {
	fmtc.Printf("{*}%s:{!} ", message)
}
func PrintActionStatus(status int) {
	switch status {
	case 0:
		fmtc.Println("{g}OK{!}")
	case 1:
		fmtc.Println("{r}ERROR{!}")
	}
}
func AddHistory(data string) {
	linenoise.AddHistory(data)
}
func SetCompletionHandler(h func(input string) []string) {
	linenoise.SetCompletionHandler(h)
}