mirror of https://github.com/chzyer/readline.git
#15: fix prefix completer
This commit is contained in:
parent
5ee706df9b
commit
9364259fb1
|
@ -12,9 +12,7 @@ func NewPrefixCompleter(pc ...*PrefixCompleter) *PrefixCompleter {
|
||||||
}
|
}
|
||||||
|
|
||||||
func PcItem(name string, pc ...*PrefixCompleter) *PrefixCompleter {
|
func PcItem(name string, pc ...*PrefixCompleter) *PrefixCompleter {
|
||||||
if len(pc) != 0 {
|
name += " "
|
||||||
name += " "
|
|
||||||
}
|
|
||||||
return &PrefixCompleter{
|
return &PrefixCompleter{
|
||||||
Name: []rune(name),
|
Name: []rune(name),
|
||||||
Children: pc,
|
Children: pc,
|
||||||
|
@ -28,7 +26,11 @@ func (p *PrefixCompleter) Do(line []rune, pos int) (newLine [][]rune, offset int
|
||||||
for _, child := range p.Children {
|
for _, child := range p.Children {
|
||||||
if len(line) >= len(child.Name) {
|
if len(line) >= len(child.Name) {
|
||||||
if runes.HasPrefix(line, child.Name) {
|
if runes.HasPrefix(line, child.Name) {
|
||||||
newLine = append(newLine, child.Name)
|
if len(line) == len(child.Name) {
|
||||||
|
newLine = append(newLine, []rune{' '})
|
||||||
|
} else {
|
||||||
|
newLine = append(newLine, child.Name)
|
||||||
|
}
|
||||||
offset = len(child.Name)
|
offset = len(child.Name)
|
||||||
lineCompleter = child
|
lineCompleter = child
|
||||||
goNext = true
|
goNext = true
|
||||||
|
|
|
@ -33,8 +33,12 @@ var completer = readline.NewPrefixCompleter(
|
||||||
readline.PcItem("bye"),
|
readline.PcItem("bye"),
|
||||||
readline.PcItem("help"),
|
readline.PcItem("help"),
|
||||||
readline.PcItem("go",
|
readline.PcItem("go",
|
||||||
readline.PcItem("build"),
|
readline.PcItem("build", readline.PcItem("-o"), readline.PcItem("-v")),
|
||||||
readline.PcItem("install"),
|
readline.PcItem("install",
|
||||||
|
readline.PcItem("-v"),
|
||||||
|
readline.PcItem("-vv"),
|
||||||
|
readline.PcItem("-vvv"),
|
||||||
|
),
|
||||||
readline.PcItem("test"),
|
readline.PcItem("test"),
|
||||||
),
|
),
|
||||||
readline.PcItem("sleep"),
|
readline.PcItem("sleep"),
|
||||||
|
|
Loading…
Reference in New Issue