Как использовать clangd в качестве форматтера в neovim?C++

Программы на C++. Форум разработчиков
Anonymous
Как использовать clangd в качестве форматтера в neovim?

Сообщение Anonymous »

Я использую nvim с ленивым режимом и использую mason, mason-lspconfig, nvim-lspconfig следующим образом

Код: Выделить всё

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" }, "ca", vim.lsp.buf.code_action, {})
vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
vim.keymap.set("n", "e", function()
vim.diagnostic.open_float(0, { scope = "line" })
end, {})
end,
},
}
Приведенный выше параметр отлично работает для C++, за исключением того, что я не могу форматировать код с помощью clangd, поэтому я последовал некоторому руководству и установил clang-format в качестве средства форматирования, используя none-ls, следующим образом:

Код: Выделить всё

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", "F", vim.lsp.buf.format, {})
end,
}
Однако я считал, что clang-format форматируется иначе, чем clangd. Я считаю, что использование формата clangd в vscode упрощает чтение кода, и большая часть устаревших проектов отформатирована таким образом, поэтому при применении формата clang создается множество ненужных изменений.
Я хочу настроить clangd как форматировщик, аналогичный настройке vscode, чтобы избежать ненужных изменений
Спасибо


Подробнее здесь: https://stackoverflow.com/questions/784 ... -in-neovim

Вернуться в «C++»