Пример #1
0
        private static async Task RunMain()
        {
            var tsCtx = new TypeScriptContext();
            await tsCtx.LoadComponentsAsync();

            const string mainFileName = "main.ts";
            //Load script
            string script = @"

class Program {
    static main() {
        console.log(""Hello, World!"");
    }
    static other() {
        console.log(""Hello, Other World!"");
    }
}

Program.main();
Progra
Program.
Program.ot
";

            tsCtx.OpenFile(mainFileName, script);
            var classNameCompletionInfo = await tsCtx.GetCompletionsAtPositionAsync(mainFileName, 192 /* The 'Progra' line*/);

            var methodCompletionInfo = await tsCtx.GetCompletionsAtPositionAsync(mainFileName, 202 /* The 'Program.' line*/);

            var noCompletionsInfo = await tsCtx.GetCompletionsAtPositionAsync(mainFileName, script.Length - 2);
        }
        private async Task <List <CodeCompletionData> > CodeCompleteAtAsync(IEditor editor, int index,
                                                                            List <UnsavedFile> unsavedFiles, string filter = "")
        {
            var currentUnsavedFile = unsavedFiles.FirstOrDefault(f => f.FileName == editor.SourceFile.FilePath);
            var currentFileConts   = currentUnsavedFile?.Contents ?? File.ReadAllText(editor.SourceFile.FilePath);
            var caretPosition      = index;
            var completions        = await _typeScriptContext.GetCompletionsAtPositionAsync(editor.SourceFile.FilePath, caretPosition);

            var editorCompletions = completions.Entries.Select(cc =>
            {
                var ccData = new CodeCompletionData(cc.Name, cc.Name)
                {
                    Kind         = ConvertCodeCompletionKind(cc.Kind),
                    BriefComment = cc.Name
                };
                return(ccData);
            })
                                    .ToList();

            return(editorCompletions);
        }