From 7021c915e6e1f8ecf8227411972796f6c9db661a Mon Sep 17 00:00:00 2001 From: "marvin.dietermann" Date: Fri, 10 Apr 2026 15:02:01 +0200 Subject: [PATCH] fix(neovim): migrate LSP config to native vim.lsp.config API Replace deprecated require("lspconfig") setup with the Neovim 0.11+ native vim.lsp.config/vim.lsp.enable API. Clangd config now lives in lsp/clangd.lua instead of the old plugins/lspconfig.lua + configs/lspconfig.lua pair. Co-Authored-By: Claude Opus 4.6 --- archduino-guide.md | 30 ++++++++++++++---------------- lib/neovim.sh | 39 +++++++++++++-------------------------- 2 files changed, 27 insertions(+), 42 deletions(-) diff --git a/archduino-guide.md b/archduino-guide.md index 6029c8e..fd2bddd 100644 --- a/archduino-guide.md +++ b/archduino-guide.md @@ -298,29 +298,27 @@ return { } ``` -Create `~/.config/nvim/lua/plugins/lsp.lua`: +Create `~/.config/nvim/lsp/clangd.lua` (native Neovim 0.11+ LSP config): ```lua return { - { - "neovim/nvim-lspconfig", - opts = { - servers = { - clangd = { - cmd = { - "clangd", - "--background-index", - "--clang-tidy", - "--header-insertion=iwyu", - "--completion-style=detailed", - }, - }, - }, - }, + cmd = { + "clangd", + "--background-index", + "--clang-tidy", + "--header-insertion=iwyu", + "--completion-style=detailed", }, + filetypes = { "c", "cpp", "objc", "objcpp", "cuda", "arduino" }, } ``` +Enable the server (e.g. in `init.lua` or a plugin file): + +```lua +vim.lsp.enable("clangd") +``` + --- ## 5. Arduino CLI diff --git a/lib/neovim.sh b/lib/neovim.sh index 2acecdf..2f65213 100644 --- a/lib/neovim.sh +++ b/lib/neovim.sh @@ -143,34 +143,11 @@ return { } LUA -# ── LSP (clangd) ─────────────────────────────────────────────── -mkdir -p "$NVIM_CFG/lua/configs" +# ── LSP (clangd) — native vim.lsp.config (Neovim 0.11+) ────── +mkdir -p "$NVIM_CFG/lsp" -cat >"$NVIM_CFG/lua/plugins/lspconfig.lua" <<'LUA' +cat >"$NVIM_CFG/lsp/clangd.lua" <<'LUA' return { - { - "neovim/nvim-lspconfig", - config = function() - require("nvchad.configs.lspconfig").defaults() - require "configs.lspconfig" - end, - }, -} -LUA - -cat >"$NVIM_CFG/lua/configs/lspconfig.lua" <<'LUA' -local configs = require "nvchad.configs.lspconfig" - -local on_attach = configs.on_attach -local on_init = configs.on_init -local capabilities = configs.capabilities - -local lspconfig = require "lspconfig" - -lspconfig.clangd.setup { - on_init = on_init, - on_attach = on_attach, - capabilities = capabilities, cmd = { "clangd", "--background-index", @@ -178,9 +155,19 @@ lspconfig.clangd.setup { "--header-insertion=iwyu", "--completion-style=detailed", }, + filetypes = { "c", "cpp", "objc", "objcpp", "cuda", "arduino" }, } LUA +# Enable clangd via native API +cat >"$NVIM_CFG/lua/plugins/lspconfig.lua" <<'LUA' +vim.lsp.enable("clangd") +return {} +LUA + +# Clean up legacy configs/lspconfig.lua if present +rm -f "$NVIM_CFG/lua/configs/lspconfig.lua" + # ── Keymaps ───────────────────────────────────────────────────── cat >"$NVIM_CFG/lua/mappings.lua" <<'LUA' require "nvchad.mappings"