diff --git a/jsre/completion.go b/jsre/completion.go index 11e209b69e..7f94dabfce 100644 --- a/jsre/completion.go +++ b/jsre/completion.go @@ -55,9 +55,18 @@ func getCompletions(vm *otto.Otto, line string) (results []string) { } } }) - // e.g. web3 append dot since its an object - if obj, _ = vm.Object(line); obj != nil { - results = append(results, line+".") + + // Append opening parenthesis (for functions) or dot (for objects) + // if the line itself is the only completion. + if len(results) == 1 && results[0] == line { + obj, _ := vm.Object(line) + if obj != nil { + if obj.Class() == "Function" { + results[0] += "(" + } else { + results[0] += "." + } + } } sort.Strings(results) diff --git a/jsre/completion_test.go b/jsre/completion_test.go index 6d42b2bd1c..8765281e5e 100644 --- a/jsre/completion_test.go +++ b/jsre/completion_test.go @@ -40,7 +40,11 @@ func TestCompleteKeywords(t *testing.T) { }{ { input: "x", - want: []string{"x", "x."}, + want: []string{"x."}, + }, + { + input: "x.someMethod", + want: []string{"x.someMethod("}, }, { input: "x.",