diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-08-15 20:28:13 +0200 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-08-15 20:28:13 +0200 |
| commit | 17e319a4455f3135ed3cc759dee8ba5034fde75b (patch) | |
| tree | 6d07c1875ae2736a5f3eb026a243328ab5c73fca /.config/nvim/lua/pm/plugins/lspconfig/setup.lua | |
| parent | 346854ff3ea83202de7437f01f1c1c336f4c3edf (diff) | |
Diffstat (limited to '.config/nvim/lua/pm/plugins/lspconfig/setup.lua')
| -rw-r--r-- | .config/nvim/lua/pm/plugins/lspconfig/setup.lua | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/.config/nvim/lua/pm/plugins/lspconfig/setup.lua b/.config/nvim/lua/pm/plugins/lspconfig/setup.lua new file mode 100644 index 0000000..2f604db --- /dev/null +++ b/.config/nvim/lua/pm/plugins/lspconfig/setup.lua @@ -0,0 +1,84 @@ +vim.diagnostic.config({ + virtual_text = { + prefix = "" + } +}) + +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('UserLspConfig', {}), + callback = function(ev) + vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' + + local opts = { buffer = ev.buf } + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) + vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts) + vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts) + vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts) + vim.keymap.set('n', '<space>wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, opts) + vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts) + vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts) + vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) + vim.keymap.set('n', '<space>f', function() + vim.lsp.buf.format { async = true } + end, opts) + vim.keymap.set('n', '<space>d', vim.diagnostic.open_float, opts) + vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) + vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) + vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist) + end, +}) + + +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +local lspconfig = require('lspconfig') + +local servers = { 'clangd', 'rust_analyzer', 'pyright', 'tsserver', 'cssls' } +for _, lsp in ipairs(servers) do + lspconfig[lsp].setup { + capabilities = capabilities, + on_init = function(client) + client.offset_encoding = "utf-8" + end, + } +end + +lspconfig.lua_ls.setup { + settings = { + Lua = { + runtime = { + version = 'LuaJIT', + }, + diagnostics = { + globals = { + 'vim', + 'require' + }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { + enable = false, + }, + }, + }, +} + + +vim.api.nvim_create_autocmd("InsertLeave", { + callback = function() + if + require("luasnip").session.current_nodes[vim.api.nvim_get_current_buf()] + and not require("luasnip").session.jump_active + then + require("luasnip").unlink_current() + end + end, +}) |