瀏覽代碼

jsre: fix <tab><tab> completion magic

Felix Lange 9 年之前
父節點
當前提交
f08680985a
共有 2 個文件被更改,包括 17 次插入4 次删除
  1. 12 3
      jsre/completion.go
  2. 5 1
      jsre/completion_test.go

+ 12 - 3
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)

+ 5 - 1
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.",