aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lua/pm/plugins/lspconfig
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/pm/plugins/lspconfig')
-rw-r--r--.config/nvim/lua/pm/plugins/lspconfig/load.lua1
-rw-r--r--.config/nvim/lua/pm/plugins/lspconfig/setup.lua84
2 files changed, 85 insertions, 0 deletions
diff --git a/.config/nvim/lua/pm/plugins/lspconfig/load.lua b/.config/nvim/lua/pm/plugins/lspconfig/load.lua
new file mode 100644
index 0000000..7e06214
--- /dev/null
+++ b/.config/nvim/lua/pm/plugins/lspconfig/load.lua
@@ -0,0 +1 @@
+return { "neovim/nvim-lspconfig" }
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,
+})