From ad90606e820f41f9ce54c83a907e15eb77ada6db Mon Sep 17 00:00:00 2001 From: jojorne Date: Wed, 19 Jun 2024 09:00:02 -0300 Subject: [PATCH 1/2] Fix buffer index crashes Notes * Position.Line doesn't take into account trimmed lines. * It appears that the axaml doesn't care about the line feed. --- .../AvaloniaLanguageServer/Services/Buffer.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/AvaloniaLSP/AvaloniaLanguageServer/Services/Buffer.cs b/src/AvaloniaLSP/AvaloniaLanguageServer/Services/Buffer.cs index 7d32718..a2d2d73 100644 --- a/src/AvaloniaLSP/AvaloniaLanguageServer/Services/Buffer.cs +++ b/src/AvaloniaLSP/AvaloniaLanguageServer/Services/Buffer.cs @@ -5,16 +5,15 @@ public sealed class Buffer public string? GetTextTillLine(Position position) { - string[] lines = _text.Split(separator, StringSplitOptions.RemoveEmptyEntries); - var linesRange = string.Join(string.Empty, lines[0..position.Line]); - string lastLine = lines[position.Line]; - - return linesRange + lastLine.Substring(0, position.Character); + string[] lines = _text.Split(separator, StringSplitOptions.None); + string text = string.Join("\n", lines[..position.Line]); + string line = lines[position.Line][..position.Character]; + return text + line; } public string? GetLine(Position position) { - string[] lines = _text.Split(separator, StringSplitOptions.RemoveEmptyEntries); + string[] lines = _text.Split(separator, StringSplitOptions.None); return lines[position.Line]; } @@ -27,4 +26,4 @@ public Buffer(string text) readonly string _text; private static readonly string[] separator = ["\n", "\r\n"]; -} \ No newline at end of file +} From a7b794bd42515ba13658f080e227807f62098062 Mon Sep 17 00:00:00 2001 From: jojorne Date: Wed, 19 Jun 2024 09:18:46 -0300 Subject: [PATCH 2/2] Append with line feed --- src/AvaloniaLSP/AvaloniaLanguageServer/Services/Buffer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AvaloniaLSP/AvaloniaLanguageServer/Services/Buffer.cs b/src/AvaloniaLSP/AvaloniaLanguageServer/Services/Buffer.cs index a2d2d73..7f7142c 100644 --- a/src/AvaloniaLSP/AvaloniaLanguageServer/Services/Buffer.cs +++ b/src/AvaloniaLSP/AvaloniaLanguageServer/Services/Buffer.cs @@ -8,7 +8,7 @@ public sealed class Buffer string[] lines = _text.Split(separator, StringSplitOptions.None); string text = string.Join("\n", lines[..position.Line]); string line = lines[position.Line][..position.Character]; - return text + line; + return $"{text}\n{line}"; } public string? GetLine(Position position)