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));
        }
Beispiel #3
0
        // 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));
            }
        }