Add some color option
This commit is contained in:
parent
85830110de
commit
7a1c82652e
4
main.go
4
main.go
|
@ -50,8 +50,10 @@ func main() {
|
||||||
completer,
|
completer,
|
||||||
prompt.MaxCompletionsOption(8),
|
prompt.MaxCompletionsOption(8),
|
||||||
prompt.PrefixOption(">>> "),
|
prompt.PrefixOption(">>> "),
|
||||||
prompt.PrefixColorOption(prompt.Blue),
|
|
||||||
prompt.TitleOption("SQLITE CLI"),
|
prompt.TitleOption("SQLITE CLI"),
|
||||||
|
prompt.TextColorOption(prompt.Red),
|
||||||
|
prompt.ResultTextColorOption(prompt.DarkGray),
|
||||||
|
prompt.CompletedTextColorOption(prompt.Green),
|
||||||
prompt.CompletionTextColor(prompt.Black),
|
prompt.CompletionTextColor(prompt.Black),
|
||||||
prompt.SelectedCompletionTextColor(prompt.White),
|
prompt.SelectedCompletionTextColor(prompt.White),
|
||||||
)
|
)
|
||||||
|
|
|
@ -39,6 +39,27 @@ func PrefixColorOption(x Color) option {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TextColorOption(x Color) option {
|
||||||
|
return func(p *Prompt) error {
|
||||||
|
p.renderer.textColor = x
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func CompletedTextColorOption(x Color) option {
|
||||||
|
return func(p *Prompt) error {
|
||||||
|
p.renderer.completedTextColor = x
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ResultTextColorOption(x Color) option {
|
||||||
|
return func(p *Prompt) error {
|
||||||
|
p.renderer.outputTextColor = x
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func CompletionTextColor(x Color) option {
|
func CompletionTextColor(x Color) option {
|
||||||
return func(p *Prompt) error {
|
return func(p *Prompt) error {
|
||||||
p.renderer.completionTextColor = x
|
p.renderer.completionTextColor = x
|
||||||
|
@ -80,7 +101,10 @@ func NewPrompt(executor Executor, completer Completer, opts ...option) *Prompt {
|
||||||
renderer: &Render{
|
renderer: &Render{
|
||||||
prefix: "> ",
|
prefix: "> ",
|
||||||
out: &VT100Writer{fd: syscall.Stdout},
|
out: &VT100Writer{fd: syscall.Stdout},
|
||||||
prefixColor: Green,
|
prefixColor: Blue,
|
||||||
|
textColor: DefaultColor,
|
||||||
|
outputTextColor: DefaultColor,
|
||||||
|
completedTextColor: Green,
|
||||||
completionTextColor: White,
|
completionTextColor: White,
|
||||||
completionBGColor: Cyan,
|
completionBGColor: Cyan,
|
||||||
selectedCompletionTextColor: Black,
|
selectedCompletionTextColor: Black,
|
||||||
|
|
|
@ -1,15 +1,17 @@
|
||||||
package prompt
|
package prompt
|
||||||
|
|
||||||
type Render struct {
|
type Render struct {
|
||||||
|
out ConsoleWriter
|
||||||
prefix string
|
prefix string
|
||||||
title string
|
title string
|
||||||
out ConsoleWriter
|
|
||||||
row uint16
|
row uint16
|
||||||
col uint16
|
col uint16
|
||||||
maxCompletions uint16
|
maxCompletions uint16
|
||||||
// colors
|
// colors
|
||||||
prefixColor Color
|
prefixColor Color
|
||||||
textColor Color
|
textColor Color
|
||||||
|
outputTextColor Color
|
||||||
|
completedTextColor Color
|
||||||
completionTextColor Color
|
completionTextColor Color
|
||||||
completionBGColor Color
|
completionBGColor Color
|
||||||
selectedCompletionTextColor Color
|
selectedCompletionTextColor Color
|
||||||
|
@ -104,22 +106,27 @@ func (r *Render) Erase(buffer *Buffer) {
|
||||||
|
|
||||||
func (r *Render) Render(buffer *Buffer, completions []string, chosen int) {
|
func (r *Render) Render(buffer *Buffer, completions []string, chosen int) {
|
||||||
line := buffer.Document().CurrentLine()
|
line := buffer.Document().CurrentLine()
|
||||||
|
r.out.SetColor(r.textColor, DefaultColor)
|
||||||
r.out.WriteStr(line)
|
r.out.WriteStr(line)
|
||||||
|
r.out.SetColor(DefaultColor, DefaultColor)
|
||||||
r.out.CursorBackward(len(line) - buffer.CursorPosition)
|
r.out.CursorBackward(len(line) - buffer.CursorPosition)
|
||||||
r.renderCompletion(buffer, completions, chosen)
|
r.renderCompletion(buffer, completions, chosen)
|
||||||
if chosen != -1 {
|
if chosen != -1 {
|
||||||
c := completions[chosen]
|
c := completions[chosen]
|
||||||
r.out.CursorBackward(len([]rune(buffer.Document().GetWordBeforeCursor())))
|
r.out.CursorBackward(len([]rune(buffer.Document().GetWordBeforeCursor())))
|
||||||
|
r.out.SetColor(r.completedTextColor, DefaultColor)
|
||||||
r.out.WriteStr(c)
|
r.out.WriteStr(c)
|
||||||
|
r.out.SetColor(DefaultColor, DefaultColor)
|
||||||
}
|
}
|
||||||
r.out.Flush()
|
r.out.Flush()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Render) BreakLine(buffer *Buffer, result string) {
|
func (r *Render) BreakLine(buffer *Buffer, result string) {
|
||||||
r.out.WriteStr(buffer.Document().Text)
|
r.out.SetColor(r.textColor, DefaultColor)
|
||||||
r.out.WriteStr("\n")
|
r.out.WriteStr(buffer.Document().Text + "\n")
|
||||||
r.out.WriteStr(result)
|
r.out.SetColor(r.outputTextColor, DefaultColor)
|
||||||
r.out.WriteStr("\n")
|
r.out.WriteStr(result + "\n")
|
||||||
|
r.out.SetColor(DefaultColor, DefaultColor)
|
||||||
r.renderPrefix()
|
r.renderPrefix()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue