I am using nvim with lazy and using mason, mason-lspconfig, nvim-lspconfig as follow
return {
{
"williamboman/mason.nvim",
config = function()
require("mason").setup()
end,
},
{
"williamboman/mason-lspconfig.nvim",
config = function()
require("mason-lspconfig").setup({
ensure_installed = { "lua_ls" },
})
end,
},
{
"neovim/nvim-lspconfig",
lazy = false,
config = function()
local lspconfig = require("lspconfig")
local capabilities = require("cmp_nvim_lsp").default_capabilities()
lspconfig.lua_ls.setup({
capabilities = capabilities,
})
lspconfig.clangd.setup({
capabilities = capabilities,
})
vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, {})
vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
vim.keymap.set("n", "<leader>e", function()
vim.diagnostic.open_float(0, { scope = "line" })
end, {})
end,
},
}
The above setting works fine for c++ except that I cannot format the code using clangd so I followed some guide and set clang-format as the formatter using none-ls as follow:
return {
"nvimtools/none-ls.nvim",
config = function()
local null_ls = require("null-ls")
null_ls.setup({
sources = {
null_ls.builtins.formatting.stylua,
null_ls.builtins.formatting.black,
null_ls.builtins.formatting.isort,
null_ls.builtins.formatting.clang_format,
},
})
vim.keymap.set("n", "<leader>F", vim.lsp.buf.format, {})
end,
}
However I believed that clang-format is formatting differently than clangd. I feel that using clangd format in vscode keep the code easier to read and most of the legacy project is formatted using that way so when applying clang-format, it creates a bunch of unnecessary change.
I want to set up clangd as formatter similar to vscode setting to avoid unnecessary changes Thanks