diff --git a/roles/neovim/files/lua/lsp/bash.lua b/roles/neovim/files/lua/lsp/bash.lua index 4e6896e..23e83c7 100644 --- a/roles/neovim/files/lua/lsp/bash.lua +++ b/roles/neovim/files/lua/lsp/bash.lua @@ -1,6 +1,9 @@ -- LSP Server for Bash +local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) + require'lspconfig'.bashls.setup { + capabilities = capabilities, on_attach = function() vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = 0, remap = false }) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { buffer = 0, remap = false }) diff --git a/roles/neovim/files/lua/lsp/latex.lua b/roles/neovim/files/lua/lsp/latex.lua index e266559..133b931 100644 --- a/roles/neovim/files/lua/lsp/latex.lua +++ b/roles/neovim/files/lua/lsp/latex.lua @@ -1,6 +1,9 @@ -- LSP Server for LaTeX +local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) + require'lspconfig'.texlab.setup { + capabilities = capabilities, on_attach = function() vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = 0, remap = false }) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { buffer = 0, remap = false }) diff --git a/roles/neovim/files/lua/lsp/lua.lua b/roles/neovim/files/lua/lsp/lua.lua index f4fca34..5ece084 100644 --- a/roles/neovim/files/lua/lsp/lua.lua +++ b/roles/neovim/files/lua/lsp/lua.lua @@ -1,6 +1,9 @@ -- LSP Server for Lua +local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) + require'lspconfig'.sumneko_lua.setup { + capabilities = capabilities, on_attach = function() vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = 0, remap = false }) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { buffer = 0, remap = false }) diff --git a/roles/neovim/files/lua/plugins/options/completion.lua b/roles/neovim/files/lua/plugins/options/completion.lua new file mode 100644 index 0000000..ed677e9 --- /dev/null +++ b/roles/neovim/files/lua/plugins/options/completion.lua @@ -0,0 +1,31 @@ +-- Completion + +vim.opt.completeopt = { 'menu', 'menuone', 'noselect' } +local cmp = require'cmp' + +cmp.setup({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) -- For `luasnip` users. + end, + }, + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, -- For luasnip users. + }, { + { name = 'buffer' }, + }) +}) diff --git a/roles/neovim/files/lua/plugins/options/indentline.lua b/roles/neovim/files/lua/plugins/options/indentline.lua index ad14651..5c05509 100644 --- a/roles/neovim/files/lua/plugins/options/indentline.lua +++ b/roles/neovim/files/lua/plugins/options/indentline.lua @@ -1,6 +1,5 @@ --- PLUGINS - OPTIONS - -- indentLine + -- vim.g.indentLine_char = '▏' vim.g.indentLine_fileType = { 'html', 'htmldjango', 'tex' } vim.g.indentLine_setConceal = 0 diff --git a/roles/neovim/files/lua/plugins/options/init.lua b/roles/neovim/files/lua/plugins/options/init.lua index 917031b..960a912 100644 --- a/roles/neovim/files/lua/plugins/options/init.lua +++ b/roles/neovim/files/lua/plugins/options/init.lua @@ -2,6 +2,7 @@ require('plugins.options.lsp') require('plugins.options.treesitter') +require('plugins.options.completion') require('plugins.options.telescope') require('plugins.options.nerdtree') require('plugins.options.vimtex') diff --git a/roles/neovim/files/lua/plugins/options/lsp.lua b/roles/neovim/files/lua/plugins/options/lsp.lua index 3f2e72c..5d97280 100644 --- a/roles/neovim/files/lua/plugins/options/lsp.lua +++ b/roles/neovim/files/lua/plugins/options/lsp.lua @@ -1,6 +1,5 @@ --- LSP - OPTIONS - -- LSP Servers + require('lsp.bash') require('lsp.latex') require('lsp.lua') diff --git a/roles/neovim/files/lua/plugins/options/nerdtree.lua b/roles/neovim/files/lua/plugins/options/nerdtree.lua index 11e10f1..cd70cfa 100644 --- a/roles/neovim/files/lua/plugins/options/nerdtree.lua +++ b/roles/neovim/files/lua/plugins/options/nerdtree.lua @@ -1,5 +1,4 @@ --- PLUGINS - OPTIONS - -- NERDTree + vim.g.NERDTreeIgnore = { '^__pycache__$', '\\.pyc', '\\~$' } vim.keymap.set('n', 'ne', 'NERDTree', { remap = true }) diff --git a/roles/neovim/files/lua/plugins/options/telescope.lua b/roles/neovim/files/lua/plugins/options/telescope.lua index 6c3a6dd..305c46a 100644 --- a/roles/neovim/files/lua/plugins/options/telescope.lua +++ b/roles/neovim/files/lua/plugins/options/telescope.lua @@ -1,4 +1,4 @@ --- TELESCOPE +-- Telescope require('telescope').setup { extensions = { diff --git a/roles/neovim/files/lua/plugins/options/treesitter.lua b/roles/neovim/files/lua/plugins/options/treesitter.lua index 1abe327..98d6bd6 100644 --- a/roles/neovim/files/lua/plugins/options/treesitter.lua +++ b/roles/neovim/files/lua/plugins/options/treesitter.lua @@ -1,6 +1,5 @@ --- PLUGINS - OPTIONS - -- Treesitter + require'nvim-treesitter.configs'.setup { -- A list of parser names, or "all" ensure_installed = { "latex", "lua" }, diff --git a/roles/neovim/files/lua/plugins/options/vimtex.lua b/roles/neovim/files/lua/plugins/options/vimtex.lua index 906ccf6..6268bed 100644 --- a/roles/neovim/files/lua/plugins/options/vimtex.lua +++ b/roles/neovim/files/lua/plugins/options/vimtex.lua @@ -1,6 +1,5 @@ --- PLUGINS - OPTIONS - -- VimTex + vim.g.tex_flavor = 'latex' vim.g.vimtex_view_method = 'zathura' vim.g.vimtex_quickfix_autoclose_after_keystrokes = 2 diff --git a/roles/neovim/files/lua/plugins/packer.lua b/roles/neovim/files/lua/plugins/packer.lua index 1f4bd9f..a2ddb4f 100644 --- a/roles/neovim/files/lua/plugins/packer.lua +++ b/roles/neovim/files/lua/plugins/packer.lua @@ -20,6 +20,16 @@ return require('packer').startup(function(use) run = function() require('nvim-treesitter.install').update({ with_sync = true }) end, } + -- Completion + use 'hrsh7th/nvim-cmp' + use 'hrsh7th/cmp-nvim-lsp' + use 'hrsh7th/cmp-buffer' + use 'hrsh7th/cmp-path' + + -- LuaSnip + use 'L3MON4D3/LuaSnip' + use 'saadparwaiz1/cmp_luasnip' + -- Telescope use { 'nvim-telescope/telescope.nvim', branch = '0.1.x',