diff options
author | Felix Lange <fjl@twurst.com> | 2016-02-20 21:58:06 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2016-04-13 18:06:42 +0800 |
commit | f08680985a479482356192ee3b36f09a8ed3cb4c (patch) | |
tree | e59567874cc34e3029243278037ef863db4f2810 /jsre | |
parent | 5542b51b5047ebd4792cd6b2cec789189c019e3c (diff) | |
download | go-tangerine-f08680985a479482356192ee3b36f09a8ed3cb4c.tar.gz go-tangerine-f08680985a479482356192ee3b36f09a8ed3cb4c.tar.zst go-tangerine-f08680985a479482356192ee3b36f09a8ed3cb4c.zip |
jsre: fix <tab><tab> completion magic
Diffstat (limited to 'jsre')
-rw-r--r-- | jsre/completion.go | 15 | ||||
-rw-r--r-- | jsre/completion_test.go | 6 |
2 files changed, 17 insertions, 4 deletions
diff --git a/jsre/completion.go b/jsre/completion.go index 11e209b69..7f94dabfc 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<tab><tab> 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 6d42b2bd1..8765281e5 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.", |