/
main.go
50 lines (43 loc) · 924 Bytes
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// A test program for the cli package.
package main
import (
"fmt"
"io"
"unicode"
"github.com/elves/elvish/pkg/cli"
"github.com/elves/elvish/pkg/cli/term"
"github.com/elves/elvish/pkg/ui"
)
type highlighter struct{}
func (highlighter) Get(code string) (ui.Text, []error) {
t := ui.Text{}
for _, r := range code {
var style ui.Styling
if unicode.IsDigit(r) {
style = ui.FgGreen
}
t = append(t, ui.T(string(r), style)...)
}
return t, nil
}
func (highlighter) LateUpdates() <-chan struct{} { return nil }
func main() {
var app cli.App
app = cli.NewApp(cli.AppSpec{
Prompt: cli.NewConstPrompt(ui.T("> ")),
Highlighter: highlighter{},
OverlayHandler: cli.MapHandler{
term.K('D', ui.Ctrl): func() { app.CommitEOF() },
},
})
for {
code, err := app.ReadCode()
if err != nil {
if err != io.EOF {
fmt.Println("error:", err)
}
break
}
fmt.Println("got:", code)
}
}