peterh / liner

Pure Go line editor with history, inspired by linenoise
MIT License
1.04k stars 132 forks source link

Pressing return at "Display all ... possibilities" completion question propagates internal error up to Prompt(...) #65

Closed frou closed 8 years ago

frou commented 8 years ago
$ go run allcomp.go 
> [Tab] [Tab]
Display all 101 possibilities? (y or n) [Return]
2016/01/13 19:57:22  liner: internal error
$ 

I'd expect it to either keep waiting for a y/n press (like it does if you press m for maybe) or take Return to mean the affirmative?

package main

import (
    "strings"
    "log"
    "github.com/peterh/liner"
)

var (
    names = []string{
        "xxxxx", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10",
        "a11", "a12", "a13", "a14", "a15", "a16", "a17", "a18", "a19", "a20",
        "a21", "a22", "a23", "a24", "a25", "a26", "a27", "a28", "a29", "a30",
        "a31", "a32", "a33", "a34", "a35", "a36", "a37", "a38", "a39", "a40",
        "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48", "a49", "a50",
        "a51", "a52", "a53", "a54", "a55", "a56", "a57", "a58", "a59", "a60",
        "a61", "a62", "a63", "a64", "a65", "a66", "a67", "a68", "a69", "a70",
        "a71", "a72", "a73", "a74", "a75", "a76", "a77", "a78", "a79", "a80",
        "a81", "a82", "a83", "a84", "a85", "a86", "a87", "a88", "a89", "a90",
        "a91", "a92", "a93", "a94", "a95", "a96", "a97", "a98", "a99", "a100"}
)

func main() {
    line := liner.NewLiner()
    defer line.Close()
    line.SetTabCompletionStyle(liner.TabPrints)
    line.SetCompleter(func(line string) (c []string) {
        for _, n := range names {
            if strings.HasPrefix(n, strings.ToLower(line)) {
                c = append(c, n)
            }
        }
        return
    })
    log.Println(line.Prompt("> "))
}
peterh commented 8 years ago

Thanks for the bug report.

frou commented 8 years ago

Thank you for the kwikfix!