summaryrefslogtreecommitdiff
path: root/lua/aotrix/plugins/lsp.lua
blob: d24b0d056d9b6754bd9839a05eb5d414a788e679 (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
41
42
43
44
45
46
47
return {
    "neovim/nvim-lspconfig",
    dependencies = {
        "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim"
    },
    config = function()
        require("mason").setup()
        require("mason-lspconfig").setup({
            ensure_installed = {"cmake", "lua_ls"}
        })
        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>")

        require('lspconfig').cmake.setup({})
        require('lspconfig').lua_ls.setup({
            settings = {completion = {callSnippet = 'Replace'}}
        })
    end
}