summaryrefslogtreecommitdiff
path: root/lua/aotrix/plugins/lsp.lua
blob: efb3d80f6c295627200cba3585c784a40344a3cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
return {
    "neovim/nvim-lspconfig",
    config = function()
        require('lspconfig').clangd.setup({
            root_dir = function(fname)
                return require("lspconfig.util").root_pattern(
                "CMakeLists.txt",
                "Makefile",
                "configure.ac",
                "configure.in",
                "config.h.in",
                "meson.build",
                "meson_options.txt",
                "build.ninja"
                )(fname) or require("lspconfig.util").root_pattern("compile_commands.json", "compile_flags.txt")(
                fname
                ) or require("lspconfig.util").find_git_ancestor(fname)
            end,
            capabilities = {
                offsetEncoding = { "utf-16" },
            },
            cmd = {
                "clangd",
                "--background-index",
                "--clang-tidy",
                "--header-insertion=iwyu",
                "--completion-style=detailed",
                "--function-arg-placeholders",
                "--fallback-style=llvm",
            },
            init_options = {
                usePlaceholders = true,
                completeUnimported = true,
                clangdFileStatus = true,
            },
        })

        vim.keymap.set("n", "<leader>o", "<cmd>ClangdSwitchSourceHeader<cr>")
    end,
}