commit c85d15e0d557eb74f768721fea6b5711a76d6fe2
parent 535c2f8658c4ace04807c578bebf741597dcb467
Author: Riley Bruins <ribru17@hotmail.com>
Date: Sun, 16 Mar 2025 10:35:37 -0700
perf(lsp): don't construct potentially expensive strings
Diffstat:
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt
@@ -366,6 +366,7 @@ PERFORMANCE
significantly improving |treesitter-highlight| performance.
• Treesitter injection query iteration is now asynchronous, making edits in
large buffers with combined injections much quicker.
+• 10x reduction in blocking time when attaching an LSP to a large buffer.
PLUGINS
diff --git a/runtime/lua/vim/lsp/rpc.lua b/runtime/lua/vim/lsp/rpc.lua
@@ -278,10 +278,8 @@ function Client:encode_and_send(payload)
if self.transport:is_closing() then
return false
end
- local jsonstr = assert(
- vim.json.encode(payload),
- string.format("Couldn't encode payload '%s'", vim.inspect(payload))
- )
+ local jsonstr = vim.json.encode(payload)
+
self.transport:write(format_message_with_content_length(jsonstr))
return true
end