51 lines
1.4 KiB
Lua
51 lines
1.4 KiB
Lua
local Linter = require("linter")
|
|
|
|
---@type vim.lsp.Config
|
|
return {
|
|
filetypes = {
|
|
"c",
|
|
"cpp",
|
|
},
|
|
cmd = {
|
|
"clangd",
|
|
"--clang-tidy",
|
|
"--enable-config",
|
|
},
|
|
single_file_support = true,
|
|
on_attach = function(_, bufnr)
|
|
Linter.add(bufnr, {
|
|
cmd = {
|
|
"clang-tidy",
|
|
"--quiet",
|
|
"--checks=-*,"
|
|
.. "clang-analyzer-*,"
|
|
.. "-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,"
|
|
.. "-clang-analyzer-security.insecureAPI.strcpy",
|
|
"%file%",
|
|
},
|
|
events = { "BufWritePost" },
|
|
clear_events = { "TextChanged", "TextChangedI" },
|
|
stdin = false,
|
|
stdout = true,
|
|
pattern = "^.+:(%d+):(%d+): (%w+): (.*) %[(.*)%]$",
|
|
groups = { "lnum", "col", "severity", "message", "code" },
|
|
source = "clang-tidy",
|
|
severity_map = {
|
|
error = vim.diagnostic.severity.ERROR,
|
|
warning = vim.diagnostic.severity.WARN,
|
|
note = vim.diagnostic.severity.HINT,
|
|
},
|
|
zero_idx_col = true,
|
|
zero_idx_lnum = true,
|
|
ignore_stderr = true,
|
|
})
|
|
|
|
vim.keymap.set(
|
|
"n",
|
|
"gs",
|
|
vim.cmd.LspClangdSwitchSourceHeader,
|
|
{ buffer = bufnr }
|
|
)
|
|
end,
|
|
}
|