diff --git a/config/nvim/init.lua b/config/nvim/init.lua index 514a449..931900c 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -3,3 +3,4 @@ vim.opt.termguicolors = true require("config.keymaps") require("config.lazy") require("config.options") +require("config.lsp") diff --git a/config/nvim/lua/config/lsp.lua b/config/nvim/lua/config/lsp.lua new file mode 100644 index 0000000..f001030 --- /dev/null +++ b/config/nvim/lua/config/lsp.lua @@ -0,0 +1,31 @@ +local lspconfig = require("lspconfig") + +-- Neovim doesn't support snippets out of the box, so we need to mutate the +-- capabilities we send to the language server to let them know we want snippets. +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true + +-- Setup our autocompletion. These configuration options are the default ones +-- copied out of the documentation. +local cmp = require("cmp") + +cmp.setup({ + snippet = { + expand = function(args) + -- For `vsnip` user. + vim.fn["vsnip#anonymous"](args.body) + end, + }, + sources = { + { name = "nvim_lsp" }, + { name = "vsnip" }, + }, + formatting = { + format = require("lspkind").cmp_format({ + with_text = true, + menu = { + nvim_lsp = "[LSP]", + }, + }), + }, +}) diff --git a/config/nvim/lua/plugins/init.lua b/config/nvim/lua/plugins/init.lua index 412f7d3..7b657c4 100644 --- a/config/nvim/lua/plugins/init.lua +++ b/config/nvim/lua/plugins/init.lua @@ -5,6 +5,7 @@ return { "hrsh7th/cmp-path", "hrsh7th/cmp-vsnip", "hrsh7th/vim-vsnip", + "onsails/lspkind-nvim", "preservim/nerdcommenter", "tpope/vim-bundler", "tpope/vim-eunuch",