local Linter = require("linter") local lsp = require("lsp") ---@type vim.lsp.Config return { filetypes = { "c", "cpp", }, cmd = { "clangd", "--clang-tidy", "--enable-config", }, single_file_support = true, on_attach = function(client, bufnr) lsp.on_attach(client, 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, }