Add some color option

This commit is contained in:
c-bata 2017-07-17 04:55:05 +09:00
parent 85830110de
commit 7a1c82652e
3 changed files with 40 additions and 7 deletions

View File

@ -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),
) )

View File

@ -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,

View File

@ -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()
} }