From 3d0195de550c4cdfe5386d60c983a43616f47a7b Mon Sep 17 00:00:00 2001 From: Ivar Fatland Date: Sat, 27 May 2023 00:50:42 +0200 Subject: [PATCH] added autocompletion --- init.lua | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index cd1c343..e22dcb7 100644 --- a/init.lua +++ b/init.lua @@ -11,6 +11,12 @@ local keymap = { show_references = 'gr', hovering_documentation = 'K', + autocomplete_scroll_down = '', + autocomplete_scroll_up = '', + autocomplete_complete = '', + autocomplete_abort = '', + autocomplete_confirm = '', + toggle_file_explorer ='', leader_key = ';', @@ -45,17 +51,21 @@ local function packer_startup(use) use 'wbthomason/packer.nvim' use 'lervag/vimtex' -- Latex vim.g.vimtex_view_method = 'zathura' + use 'ellisonleao/gruvbox.nvim' -- Theme vim.o.termguicolors = true vim.cmd [[ colorscheme gruvbox ]] + use 'nvim-tree/nvim-tree.lua' -- File explorer vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 require('nvim-tree').setup() vim.keymap.set('n', keymap.toggle_file_explorer, ':NvimTreeFindFileToggle') + use 'nvim-tree/nvim-web-devicons' -- Icons for file explorer and info bar use 'nvim-lualine/lualine.nvim' -- Lower info-bar require('lualine').setup {options = {icons_enabled = true, theme = 'gruvbox'}} + use 'nvim-treesitter/nvim-treesitter' -- Syntax highlighting require('nvim-treesitter.configs').setup { ensure_installed = 'all', @@ -66,6 +76,33 @@ local function packer_startup(use) additional_vim_regex_highlighting = false, } } + + use 'hrsh7th/nvim-cmp' -- Autocompletion + use 'hrsh7th/cmp-nvim-lsp' + use 'L3MON4D3/LuaSnip' + local cmp = require('cmp') + cmp.setup{ + mapping = cmp.mapping.preset.insert { + [keymap.autocomplete_scroll_down] = cmp.mapping.scroll_docs(-4), + [keymap.autocomplete_scroll_up] = cmp.mapping.scroll_docs( 4), + [keymap.autocomplete_complete] = cmp.mapping.complete(), + [keymap.autocomplete_abort] = cmp.mapping.abort(), + [keymap.autocomplete_confirm] = cmp.mapping.confirm{ select = true }, + }, + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + sources = cmp.config.sources( + { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, + {{ name = 'buffer' }} + ) + } + use { -- LSP 'williamboman/mason.nvim', 'williamboman/mason-lspconfig.nvim', @@ -77,9 +114,12 @@ local function packer_startup(use) 'ltex', 'lua_ls', 'marksman', 'pyright', 'zls', 'rust_analyzer' } } + local capabilities = require('cmp_nvim_lsp').default_capabilities() require("mason-lspconfig").setup_handlers { function (server_name) - require("lspconfig")[server_name].setup {} + require("lspconfig")[server_name].setup { + capabilities = capabilities + } end, } vim.keymap.set('n', keymap.rename_symbol, vim.lsp.buf.rename, {})