Completions

This commit is contained in:
nub31
2025-10-23 13:49:12 +02:00
parent 3da68a1e34
commit 53cb8b9cc0
4 changed files with 222 additions and 41 deletions

View File

@@ -4,6 +4,43 @@ namespace NubLang.LSP;
public static class AstExtensions
{
public static bool ContainsPosition(this Node node, int line, int character)
{
if (node.Tokens.Count == 0)
{
return false;
}
var start = node.Tokens.First().Span.Start;
var end = node.Tokens.Last().Span.End;
var startLine = start.Line - 1;
var startChar = start.Column - 1;
var endLine = end.Line - 1;
var endChar = end.Column - 1;
if (line < startLine || line > endLine) return false;
if (line > startLine && line < endLine) return true;
if (startLine == endLine)
{
return character >= startChar && character <= endChar;
}
if (line == startLine)
{
return character >= startChar;
}
if (line == endLine)
{
return character <= endChar;
}
return false;
}
public static IEnumerable<Node> EnumerateDescendantsAndSelf(this Node node)
{
yield return node;