From c85d15e0d557eb74f768721fea6b5711a76d6fe2 Mon Sep 17 00:00:00 2001 From: Riley Bruins Date: Sun, 16 Mar 2025 10:35:37 -0700 Subject: perf(lsp): don't construct potentially expensive strings --- runtime/doc/news.txt | 1 + runtime/lua/vim/lsp/rpc.lua | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt index e74344cece..f7f86237f6 100644 --- 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 index a0d1fe776b..d31d94cab7 100644 --- 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 -- cgit