diff --git a/nvim/after/plugin/settings.lua b/nvim/after/plugin/settings.lua index 3661941..fbf2ab5 100644 --- a/nvim/after/plugin/settings.lua +++ b/nvim/after/plugin/settings.lua @@ -1,34 +1,75 @@ -- lsp-zero -local lsp = require('lsp-zero') +local lsp_zero = require('lsp-zero') -lsp.preset('recommended') -lsp.setup() +lsp_zero.on_attach(function(client, bufnr) + local opts = {buffer = bufnr, remap = false} + + vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) + vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts) + vim.keymap.set("n", "vws", function() vim.lsp.buf.workspace_symbol() end, opts) + vim.keymap.set("n", "vd", function() vim.diagnostic.open_float() end, opts) + vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts) + vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts) + vim.keymap.set("n", "vca", function() vim.lsp.buf.code_action() end, opts) + vim.keymap.set("n", "vrr", function() vim.lsp.buf.references() end, opts) + vim.keymap.set("n", "vrn", function() vim.lsp.buf.rename() end, opts) + vim.keymap.set("i", "", function() vim.lsp.buf.signature_help() end, opts) +end) + +-- Omnisharp + +-- Mason +require('mason').setup({}) +require('mason-lspconfig').setup({ + ensure_installed = {'tsserver', 'rust_analyzer'}, + handlers = { + lsp_zero.default_setup, + lua_ls = function() + local lua_opts = lsp_zero.nvim_lua_ls() + require('lspconfig').lua_ls.setup(lua_opts) + end, + } +}) + +-- Cmp +local cmp = require('cmp') +local cmp_select = {behavior = cmp.SelectBehavior.Select} + +cmp.setup({ + sources = { + {name = 'nvim_lsp'}, + {name = 'nvim_lsp_signature_help'}, + {name = 'nvim_lua'}, + {name = 'luasnip', keyword_length = 2}, + {name = 'buffer', keyword_length = 3}, + {name = 'path'}, + }, + formatting = lsp_zero.cmp_format(), + completion = { + completeopt = 'menu,menuone,noinsert' + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.select_prev_item(cmp_select), + [''] = cmp.mapping.select_next_item(cmp_select), + [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping.complete(), + }), +}) -- Treesitter vim.opt.runtimepath:append("~/.local/share/nvim/parsers") -require'nvim-treesitter.configs'.setup { - -- A list of parser names, or "all" (the five listed parsers should always be installed) - ensure_installed = { "c", "cpp", "javascript", "lua", "vim" }, - - -- Install parsers synchronously (only applied to `ensure_installed`) - sync_install = false, - - -- Automatically install missing parsers when entering buffer - -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally - auto_install = true, - - parser_install_dir = "~/.local/share/nvim/parsers", - - highlight = { - enable = true, - - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - additional_vim_regex_highlighting = false, - }, +require('nvim-treesitter.configs').setup { + ensure_installed = { + "c", "lua", "vim", "c_sharp", "cpp", "python", "json", "json5", + "bibtex", "query" }, + sync_install = false, + auto_install = true, + parser_install_dir = "~/.local/share/nvim/parsers", + highlight = { + enable = true, + additional_vim_regex_highlighting = false, + }, } -- Obsidian diff --git a/nvim/lua/trianta/lsp.lua b/nvim/lua/trianta/lsp.lua index 07cf36c..25c5692 100644 --- a/nvim/lua/trianta/lsp.lua +++ b/nvim/lua/trianta/lsp.lua @@ -1,6 +1,6 @@ return { 'VonHeikemen/lsp-zero.nvim', - branch = 'v1.x', + branch = 'v3.x', dependencies = { -- LSP Support "neovim/nvim-lspconfig", -- Required @@ -18,5 +18,5 @@ return { -- Snippets 'L3MON4D3/LuaSnip', -- Required 'rafamadriz/friendly-snippets', -- Optional - }, + } }