1
1
namespace UnityScript.MonoDevelop.Completion
2
2
3
+ import System.Collections.Generic
4
+
5
+ import UnityScript
3
6
import UnityScript.MonoDevelop
4
7
import UnityScript.MonoDevelop.ProjectModel
5
8
9
+ import MonoDevelop.Core
10
+ import MonoDevelop.Projects
6
11
import MonoDevelop.Projects.Dom.Parser
7
12
import MonoDevelop.Ide.Gui.Content
8
13
import MonoDevelop.Ide.CodeCompletion
9
14
15
+ import Boo.Lang.Compiler
16
+ import Boo.Lang.Compiler.Steps
17
+ import Boo.Lang.Compiler.Ast
18
+ import Boo.Lang.Compiler.IO
19
+ import Boo.Lang.Compiler.TypeSystem
10
20
import Boo.Lang.PatternMatching
11
21
12
22
class UnityScriptEditorCompletion (CompletionTextEditorExtension):
13
23
14
24
_dom as ProjectDom
25
+ _resolver as UnityScriptTypeResolver
26
+ _project as DotNetProject
15
27
16
28
override def Initialize ():
17
29
super ()
18
30
_dom = ProjectDomService.GetProjectDom(Document.Project) or ProjectDomService.GetFileDom(Document.FileName)
19
31
InstallUnityScriptSyntaxModeIfNeeded()
32
+ _resolver = UnityScriptTypeResolver()
33
+ _project = Document.Project as DotNetProject
20
34
21
35
def InstallUnityScriptSyntaxModeIfNeeded ():
22
36
view = Document.GetContent[of MonoDevelop.SourceEditor.SourceEditorView]()
@@ -29,7 +43,7 @@ class UnityScriptEditorCompletion(CompletionTextEditorExtension):
29
43
if mode is not null :
30
44
view .Document.SyntaxMode = mode
31
45
else :
32
- MonoDevelop.Core. LoggingService.LogWarning(GetType() + " could not get SyntaxMode for mimetype '" + mimeType + "'." )
46
+ LoggingService.LogWarning(GetType() + " could not get SyntaxMode for mimetype '" + mimeType + "'." )
33
47
34
48
override def ExtendsEditor (doc as MonoDevelop .Ide.Gui.Document, editor as IEditableTextBuffer ):
35
49
return IsUnityScriptFile(doc .Name)
@@ -46,12 +60,35 @@ class UnityScriptEditorCompletion(CompletionTextEditorExtension):
46
60
return ImportCompletionDataFor('' )
47
61
48
62
case '.' :
49
- lineText = GetLineText(context .TriggerLine)
50
- if not lineText .StartsWith("import " ):
51
- return null
63
+ # lineText = GetLineText(context.TriggerLine)
64
+ # if not lineText.StartsWith("import "):
65
+ # return null
66
+
67
+ # nameSpace = lineText[len("import "):context.TriggerLineOffset-2].Trim()
68
+ # return ImportCompletionDataFor(nameSpace)
69
+ result = null as CompletionDataList
70
+ text = string .Format ("{0}{1} {2}" , Document.TextEditor.GetText (0 , context .TriggerOffset),
71
+ CompletionFinder.CompletionToken,
72
+ Document.TextEditor.GetText (context .TriggerOffset, Document.TextEditor.TextLength))
73
+ print text
74
+ _resolver .Input.Clear()
75
+ _resolver .Input.Add(StringInput("completion text" , text ))
76
+
77
+ ast = _resolver .Run()
78
+ print ast .ToCodeString()
52
79
53
- nameSpace = lineText [len ("import " ):context .TriggerLineOffset- 2 ].Trim()
54
- return ImportCompletionDataFor(nameSpace )
80
+ finder = CompletionFinder()
81
+ type = finder .FindCompletionTypeFor(ast )
82
+ print type
83
+ if (null != type ):
84
+ result = CompletionDataList()
85
+ resultHash = Dictionary[of string ,string ]()
86
+ for member in type .GetMembers():
87
+ print member
88
+ resultHash [member .Name] = member .Name
89
+ result .AddRange(resultHash .Keys)
90
+
91
+ return result
55
92
56
93
otherwise :
57
94
return null
0 commit comments