From 4eb8d3b4e532df64081f56f936100347f9bec1dc Mon Sep 17 00:00:00 2001 From: mathijs-bakker Date: Mon, 1 Sep 2025 12:41:13 +0200 Subject: [PATCH] Reattach to the LSP client after connection lost. closes #3 --- lua/godotdev/reconnect_lsp.lua | 18 ++++++++++++++++++ lua/godotdev/setup.lua | 8 +++++--- 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 lua/godotdev/reconnect_lsp.lua diff --git a/lua/godotdev/reconnect_lsp.lua b/lua/godotdev/reconnect_lsp.lua new file mode 100644 index 0000000..416651c --- /dev/null +++ b/lua/godotdev/reconnect_lsp.lua @@ -0,0 +1,18 @@ +local M = {} + +M.reconnect_lsp = function() + local clients = vim.lsp.get_clients() + for _, client in ipairs(clients) do + if client.name == "godot" then + vim.lsp.stop_client(client.id, true) + end + end + vim.cmd("edit") -- triggers LSP reattach for current buffer + vim.notify("Godot LSP reconnected", vim.log.levels.INFO) +end + +vim.api.nvim_create_user_command("GodotReconnectLSP", function() + M.reconnect_lsp() +end, {}) + +return M diff --git a/lua/godotdev/setup.lua b/lua/godotdev/setup.lua index fb42f56..a7dc56e 100644 --- a/lua/godotdev/setup.lua +++ b/lua/godotdev/setup.lua @@ -14,9 +14,7 @@ function M.setup(opts) editor_port = M.opts.editor_port, }) - require("godotdev.health").setup({ - port = M.opts.editor_port, - }) + require("godotdev.reconnect_lsp") require("godotdev.dap").setup({ type = "server", @@ -26,6 +24,10 @@ function M.setup(opts) require("godotdev.tree-sitter") + require("godotdev.health").setup({ + port = M.opts.editor_port, + }) + if opts.csharp then local dap = require("dap") dap.adapters.coreclr = {