From 1760e7211718084cba7c9f5350024d8f4b51e608 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Thu, 29 Nov 2018 19:10:32 +0100 Subject: [PATCH] Support for text completion when requesting complete in the middle of indexer --- UpsilonLanguageServer/Lib/Upsilon.dll | Bin 148480 -> 148480 bytes UpsilonLanguageServer/Lib/Upsilon.pdb | Bin 53212 -> 53236 bytes .../Services/TextDocumentServer.cs | 83 +++++++++++++----- 3 files changed, 60 insertions(+), 23 deletions(-) diff --git a/UpsilonLanguageServer/Lib/Upsilon.dll b/UpsilonLanguageServer/Lib/Upsilon.dll index 7105f35654926f9890cb553831db81895127a2d3..521034023f25b7d00f5e0137e282596bfb1a57e8 100644 GIT binary patch delta 33225 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 delta 33163 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 Dlq?`Z diff --git a/UpsilonLanguageServer/Lib/Upsilon.pdb b/UpsilonLanguageServer/Lib/Upsilon.pdb index b5cfd3a19c0e410a312d026173efb43a2f8660dd..9ed4e9f37d4ec49e72c8a5481a09bef405026c1d 100644 GIT binary patch delta 14104 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 a#?x;V^9b%zNXBn(^-y-zbbkAl2LA`Md003A delta 14092 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 diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/Services/TextDocumentServer.cs b/UpsilonLanguageServer/UpsilonLanguageServer/Services/TextDocumentServer.cs index 722f438..28d6368 100644 --- a/UpsilonLanguageServer/UpsilonLanguageServer/Services/TextDocumentServer.cs +++ b/UpsilonLanguageServer/UpsilonLanguageServer/Services/TextDocumentServer.cs @@ -134,36 +134,43 @@ namespace UpsilonLanguageServer.Services var findNode = doc.Bound.GetBottomNodeAtPosition(linePos + position.Character - 2); if (findNode is BoundVariableSymbol variableSymbol) { - if (variableSymbol.VariableSymbol is FunctionParameterSymbol parameterSymbol && - parameterSymbol.BoundTypeDefinition is UserDataBoundTypeDefinition udBoundDef) + var result = await GetListFromVariableSymbol(variableSymbol); + if (result != null) { - return new CompletionList( - udBoundDef.Properties.Select(x => - { - var (key, value) = x; - return new CompletionItem(key, CompletionItemKind.Variable, - $"{value.ActualType}({value.Type})", $"{value.Comment}", null); - })); - } - if (variableSymbol.VariableSymbol is TableVariableSymbol tableSymbol) - { - return new CompletionList( - tableSymbol.Variables.Select(x => - { - var (key, value) = x; - return new CompletionItem(key, - CompletionItemKind.Variable, value.Type.ToString(), - x.Value.CommentValue == null - ? "" - : $"{string.Join(" \n", value.CommentValue)}", null); - })); + return result; } } } else { var linePos = doc.SourceText.GetLineStartPos(position.Line); - var scope = doc.Bound.GetScopeAt(linePos + position.Character); + var characterPosition = linePos + position.Character; + using (var nodeIterator = doc.Bound.GetNodeAtPosition(characterPosition).GetEnumerator()) + { + if (nodeIterator.MoveNext()) + { + var node = nodeIterator.Current; + if (node.Kind != BoundKind.BoundFullstopIndexExpression && nodeIterator.MoveNext()) + { + node = nodeIterator.Current; + } + if (node is BoundFullStopIndexExpression indexExpression) + { + var expression = indexExpression.Expression; + if (expression.Kind == BoundKind.VariableExpression) + { + var variableExpression = (BoundVariableExpression)expression; + var result = await GetListFromVariableSymbol(variableExpression.Variable); + if (result != null) + { + return result; + } + } + } + } + + } + var scope = doc.Bound.GetScopeAt(characterPosition); var variables = scope.GetBoundScopeVisibleVariables(); if (scope != null) { @@ -183,5 +190,35 @@ namespace UpsilonLanguageServer.Services return new CompletionList(new CompletionItem[0], false); } + private static async Task GetListFromVariableSymbol(BoundVariableSymbol variableSymbol) + { + if (variableSymbol.VariableSymbol is FunctionParameterSymbol parameterSymbol && + parameterSymbol.BoundTypeDefinition is UserDataBoundTypeDefinition udBoundDef) + { + return new CompletionList( + udBoundDef.Properties.Select(x => + { + var (key, value) = x; + return new CompletionItem(key, CompletionItemKind.Variable, + $"{value.ActualType}({value.Type})", $"{value.Comment}", null); + })); + } + if (variableSymbol.VariableSymbol is TableVariableSymbol tableSymbol) + { + return new CompletionList( + tableSymbol.Variables.Select(x => + { + var (key, value) = x; + return new CompletionItem(key, + CompletionItemKind.Variable, value.Type.ToString(), + x.Value.CommentValue == null + ? "" + : $"{string.Join(" \n", value.CommentValue)}", null); + })); + } + + return null; + } + } }