diff options
Diffstat (limited to 'store/config/nvim/lua/setup/lsp.lua')
-rw-r--r-- | store/config/nvim/lua/setup/lsp.lua | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/store/config/nvim/lua/setup/lsp.lua b/store/config/nvim/lua/setup/lsp.lua new file mode 100644 index 0000000..15deacd --- /dev/null +++ b/store/config/nvim/lua/setup/lsp.lua @@ -0,0 +1,67 @@ +-- spellchecker: words denols luals + +vim.lsp.config("*", { + capabilities = vim.tbl_extend("force", + vim.lsp.protocol.make_client_capabilities(), + require("cmp_nvim_lsp").default_capabilities() + ) +}) + +local function setup_clangd() + local clangd = "clangd" + local brew_clangd_path = "/usr/local/opt/llvm/bin/clangd" + + if vim.uv.fs_stat(brew_clangd_path) ~= nil then + clangd = brew_clangd_path + end + + vim.lsp.config("clangd", { + cmd = { clangd } + }) + local old_on_attach = vim.lsp.config.clangd.on_attach + vim.lsp.config.clangd.on_attach = function(client, bufnr) + if old_on_attach then old_on_attach(client, bufnr) end + vim.keymap.set('n', 'grs', "<cmd>ClangdSwitchSourceHeader<cr>", { + buffer = bufnr + }) + end +end + +local function setup_luals() + vim.lsp.config("lua_ls", { + settings = { + Lua = { + runtime = { + version = "LuaJIT" + }, + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = { + [vim.fn.expand "$VIMRUNTIME/lua"] = true, + [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true, + [vim.fn.stdpath "data" .. "/lazy/lazy.nvim/lua/lazy"] = true, + }, + maxPreload = 100000, + preloadFileSize = 10000, + }, + }, + }, + }) +end + +local function setup() + vim.lsp.enable('denols') + vim.lsp.enable('cmake') + vim.lsp.enable('bashls') + vim.lsp.enable('html') + vim.lsp.enable('cssls') + setup_clangd() + setup_luals() +end + + +return { + setup = setup +} |