diff --git a/complete.go b/complete.go index 9ddfee2..2a4c905 100644 --- a/complete.go +++ b/complete.go @@ -78,6 +78,9 @@ func Complete(name string, cmd Completer) { if err != nil { panic("COMP_POINT env should be integer, got: " + point) } + if i > len(line) { + i = len(line) + } // Parse the command line up to the completion point. args := arg.Parse(line[:i]) diff --git a/complete_test.go b/complete_test.go index 04b10cc..3a0809f 100644 --- a/complete_test.go +++ b/complete_test.go @@ -173,7 +173,7 @@ func TestComplete(t *testing.T) { {shouldExit: false, line: "", point: ""}, {shouldPanic: true, line: "cmd", point: ""}, {shouldPanic: true, line: "cmd", point: "a"}, - {shouldPanic: true, line: "cmd", point: "4"}, + {shouldExit: true, line: "cmd", point: "4"}, {shouldExit: true, install: "1"}, {shouldExit: false, install: "a"},