private void GetCompletion(ScriptFile script, Scope scope) { for (int i = 0; i < Tree.Length; i++) { if (Tree[i] != null) { // Get the treescope. Don't get the completion items if it is null. var treeScope = ExprContextTree[i].GetScope(); if (treeScope != null) { DocRange range; if (i < Tree.Length - 1) { range = ExprContextTree[i + 1].GetRange(); } // Expression path has a trailing '.' else if (_trailingSeperator != null) { range = new DocRange( DocRange.GetRange(_trailingSeperator).end, DocRange.GetRange(script.NextToken(_trailingSeperator)).start ); } else { continue; } script.AddCompletionRange(new CompletionRange(treeScope, scope, range, CompletionRangeKind.ClearRest)); } } } }
public static void AddImportCompletion(DeltinScript deltinScript, ScriptFile script, string directory, DocRange range) { List <CompletionItem> completionItems = new List <CompletionItem>(); var directories = Directory.GetDirectories(directory); var files = Directory.GetFiles(directory); completionItems.Add(new CompletionItem() { Label = "../", Detail = Directory.GetParent(directory).FullName, Kind = CompletionItemKind.Folder }); foreach (var dir in directories) { completionItems.Add(new CompletionItem() { Label = Path.GetFileName(dir), Detail = dir, Kind = CompletionItemKind.Folder }); } foreach (var file in files) { completionItems.Add(new CompletionItem() { Label = Path.GetFileName(file), Detail = file, Kind = CompletionItemKind.File }); } script.AddCompletionRange(new CompletionRange(deltinScript, completionItems.ToArray(), range, CompletionRangeKind.ClearRest)); }
// Normal public StringAction(ScriptFile script, DeltinScriptParser.StringContext stringContext, bool parse = true) { Value = Extras.RemoveQuotes(stringContext.STRINGLITERAL().GetText()); Localized = stringContext.LOCALIZED() != null; StringRange = DocRange.GetRange(stringContext.STRINGLITERAL()); if (parse) { ParseString(script); } if (Localized) { script.AddCompletionRange(new CompletionRange(StringCompletion, StringRange, CompletionRangeKind.ClearRest)); } }