Skip to content

Commit 7131ee7

Browse files
committed
Fix autocomplete
Fix autocomplete
1 parent 203ccb9 commit 7131ee7

File tree

2 files changed

+29
-154
lines changed

2 files changed

+29
-154
lines changed

api/handlers/rest_ApiComplete.go

Lines changed: 13 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -13,95 +13,32 @@ import (
1313
"github.com/cheikhshift/gos/core"
1414
"github.com/gorilla/sessions"
1515
"github.com/thestrukture/IDE/api/globals"
16-
"gopkg.in/mgo.v2/bson"
1716
)
1817

1918
//
2019
func ApiComplete(w http.ResponseWriter, r *http.Request, session *sessions.Session) (response string, callmet bool) {
2120

2221
prefx := r.FormValue("pref")
2322

24-
ret := []bson.M{}
25-
//return {name: ea.word, value: ea.insert, score: 0, meta: ea.meta}
26-
gxml := os.ExpandEnv("$GOPATH") + "/src/" + r.FormValue("pkg") + "/gos.gxml"
23+
content := r.FormValue("content")
24+
id := r.FormValue("id")
25+
tempFile := filepath.Join(globals.AutocompletePath, id)
2726

28-
if _, err := os.Stat(gxml); !os.IsNotExist(err) && r.FormValue("gocode") == "" {
29-
gos, _ := core.PLoadGos(gxml)
30-
score := 0
31-
for _, v := range gos.Variables {
27+
ioutil.WriteFile(tempFile, []byte(content), 0700)
28+
cms := "gocode"
3229

33-
if strings.Contains(v.Name, prefx) {
34-
score = score + 1
35-
ret = append(ret, bson.M{"name": v.Name, "value": v.Name, "score": score, "meta": "Global variable | " + v.Type})
36-
}
37-
38-
}
39-
40-
for _, v := range gos.RootImports {
41-
42-
if strings.Contains(v.Src, prefx) {
43-
score = score + 1
44-
paths := strings.Split(v.Src, "/")
45-
ret = append(ret, bson.M{"name": v.Src, "value": paths[len(paths)-1], "score": score, "meta": "package"})
46-
}
47-
48-
}
49-
50-
for _, v := range gos.Header.Structs {
51-
52-
if strings.Contains(v.Name, prefx) {
53-
score = score + 1
54-
ret = append(ret, bson.M{"name": v.Name, "value": v.Name, "score": score, "meta": "Interface"})
55-
}
56-
57-
}
58-
59-
for _, v := range gos.Header.Objects {
60-
61-
if strings.Contains(v.Name, prefx) {
62-
score = score + 1
63-
ret = append(ret, bson.M{"name": v.Name, "value": v.Name, "score": score, "meta": "{{Interface func group}}"})
64-
}
65-
66-
}
67-
68-
for _, v := range gos.Methods.Methods {
69-
70-
if strings.Contains(v.Name, prefx) {
71-
score = score + 1
72-
ret = append(ret, bson.M{"name": v.Name, "value": v.Name + " ", "score": score, "meta": "{{Template pipeline}}"})
73-
score = score + 1
74-
ret = append(ret, bson.M{"name": v.Name, "value": "net" + v.Name + "(" + v.Variables + ")", "score": score, "meta": "Pipeline go function."})
75-
}
76-
77-
}
78-
79-
for _, v := range gos.Templates.Templates {
80-
81-
if strings.Contains(v.Name, prefx) {
82-
score = score + 1
83-
ret = append(ret, bson.M{"name": v.Name, "value": v.Name + " ", "score": score, "meta": "{{Template $struct}}"})
84-
score = score + 1
85-
ret = append(ret, bson.M{"name": v.Name, "value": "netb" + v.Name + "(" + v.Struct + "{})", "score": score, "meta": "Template build go function."})
86-
}
87-
88-
}
89-
90-
response = mResponse(ret)
91-
} else {
92-
content := r.FormValue("content")
93-
id := r.FormValue("id")
94-
tempFile := filepath.Join(globals.AutocompletePath, id)
30+
if globals.Windows {
31+
cms = strings.Replace(os.ExpandEnv("$GOPATH")+"\\bin\\gocode.exe", "/", "\\", -1)
32+
}
9533

96-
ioutil.WriteFile(tempFile, []byte(content), 0700)
97-
cmd := fmt.Sprintf("gocode -f=json --in=%s autocomplete %s", tempFile, prefx)
34+
cmd := fmt.Sprintf(cms+" -f=json --in=%s autocomplete %s", tempFile, prefx)
9835

99-
res, _ := core.RunCmdSmart(cmd)
100-
response = res
36+
res, err := core.RunCmdSmart(cmd)
37+
response = res
10138

102-
os.Remove(tempFile)
39+
10340

104-
}
41+
os.Remove(tempFile)
10542

10643
callmet = true
10744
return

gos.gxml

Lines changed: 16 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -2341,89 +2341,27 @@ for _, v := range apps {
23412341

23422342
prefx := r.FormValue("pref")
23432343

2344+
2345+
content := r.FormValue("content")
2346+
id := r.FormValue("id")
2347+
tempFile := filepath.Join(autocompletePath, id)
23442348

2345-
ret := []bson.M{}
2346-
//return {name: ea.word, value: ea.insert, score: 0, meta: ea.meta}
2347-
gxml := os.ExpandEnv("$GOPATH") + "/src/" + r.FormValue("pkg") + "/gos.gxml"
2348-
2349-
if _, err := os.Stat(gxml); !os.IsNotExist(err) && r.FormValue("gocode") == "" {
2350-
gos,_ := core.PLoadGos(gxml)
2351-
score := 0
2352-
for _,v := range gos.Variables {
2353-
2354-
if strings.Contains(v.Name, prefx){
2355-
score = score + 1
2356-
ret = append(ret, bson.M{"name":v.Name,"value":v.Name,"score":score,"meta":"Global variable | " + v.Type})
2357-
}
2358-
2359-
}
2360-
2361-
for _,v := range gos.RootImports {
2362-
2363-
if strings.Contains(v.Src, prefx){
2364-
score = score + 1
2365-
paths := strings.Split(v.Src,"/")
2366-
ret = append(ret, bson.M{"name":v.Src,"value":paths[len(paths) - 1],"score":score,"meta":"package"})
2367-
}
2368-
2369-
}
2370-
2371-
for _,v := range gos.Header.Structs {
2372-
2373-
if strings.Contains(v.Name, prefx){
2374-
score = score + 1
2375-
ret = append(ret, bson.M{"name":v.Name,"value":v.Name ,"score":score,"meta":"Interface"})
2376-
}
2377-
2378-
}
2379-
2380-
for _,v := range gos.Header.Objects {
2381-
2382-
if strings.Contains(v.Name, prefx){
2383-
score = score + 1
2384-
ret = append(ret, bson.M{"name":v.Name,"value":v.Name ,"score":score,"meta":"{{Interface func group}}"})
2385-
}
2386-
2387-
}
2388-
2389-
for _,v := range gos.Methods.Methods {
2390-
2391-
if strings.Contains(v.Name, prefx){
2392-
score = score + 1
2393-
ret = append(ret, bson.M{"name":v.Name,"value":v.Name + " ","score":score,"meta":"{{Template pipeline}}"})
2394-
score = score + 1
2395-
ret = append(ret, bson.M{"name":v.Name,"value":"net_" + v.Name + "(" + v.Variables +")","score":score,"meta":"Pipeline go function."})
2396-
}
2397-
2398-
}
2399-
2400-
for _,v := range gos.Templates.Templates {
2401-
2402-
if strings.Contains(v.Name, prefx){
2403-
score = score + 1
2404-
ret = append(ret, bson.M{"name":v.Name,"value":v.Name + " ","score":score,"meta":"{{Template $struct}}"})
2405-
score = score + 1
2406-
ret = append(ret, bson.M{"name":v.Name,"value":"net_b" + v.Name + "(" + v.Struct +"{})","score":score,"meta":"Template build go function."})
2407-
}
2349+
ioutil.WriteFile(tempFile, []byte(content), 0700)
2350+
cms := "gocode"
24082351

2409-
}
2410-
2411-
response = mResponse(ret)
2412-
} else {
2413-
content := r.FormValue("content")
2414-
id := r.FormValue("id")
2415-
tempFile := filepath.Join(autocompletePath, id)
2352+
if Windows {
2353+
cms = strings.Replace(os.ExpandEnv("$GOPATH")+"\\bin\\gocode.exe", "/", "\\", -1)
2354+
2355+
}
24162356

2417-
ioutil.WriteFile(tempFile, []byte(content), 0700)
2418-
cmd := fmt.Sprintf("gocode -f=json --in=%s autocomplete %s", tempFile ,prefx)
2357+
cmd := fmt.Sprintf( cms + " -f=json --in=%s autocomplete %s", tempFile ,prefx)
24192358

2420-
res, _ := core.RunCmdSmart(cmd)
2421-
response = res
2422-
2423-
os.Remove(tempFile)
2424-
2425-
}
2359+
res, err := core.RunCmdSmart(cmd)
2360+
response = res
24262361

2362+
2363+
2364+
os.Remove(tempFile)
24272365

24282366
</end>
24292367

0 commit comments

Comments
 (0)