From 2630f0a26f2ddcbc43fbf0de6612b7ba9540b8c8 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 3 Sep 2022 15:42:34 +0300 Subject: [PATCH] Nvim: separate cmp and luasnip configs --- home/.config/nvim/lua/plugins/cmp.lua | 26 ++++++----------------- home/.config/nvim/lua/plugins/init.lua | 19 +++++++++++------ home/.config/nvim/lua/plugins/luasnip.lua | 15 +++++++++++++ 3 files changed, 34 insertions(+), 26 deletions(-) create mode 100644 home/.config/nvim/lua/plugins/luasnip.lua diff --git a/home/.config/nvim/lua/plugins/cmp.lua b/home/.config/nvim/lua/plugins/cmp.lua index 77c8516..414d4f8 100644 --- a/home/.config/nvim/lua/plugins/cmp.lua +++ b/home/.config/nvim/lua/plugins/cmp.lua @@ -1,17 +1,15 @@ return function() + local cmp = require('cmp') + local luasnip = require('luasnip') + + if not cmp then return end + -- Setup git completion source require("cmp_git").setup() -- Set completeopt to have a better completion experience vim.o.completeopt = 'menuone,noselect' - -- luasnip setup - local luasnip = require 'luasnip' - - -- nvim-cmp setup - local cmp = require 'cmp' - if not cmp then return end - cmp.setup { snippet = {expand = function(args) luasnip.lsp_expand(args.body) end}, mapping = { @@ -52,19 +50,7 @@ return function() -- Enable autopairs when enter is processed -- on completion - local cmp_autopairs = require 'nvim-autopairs.completion.cmp' + local cmp_autopairs = require('nvim-autopairs.completion.cmp') cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done()) - -- load friendly-snippets to luasnip - require('luasnip/loaders/from_vscode').lazy_load() - - -- Register snippet parameter navigation keybindings - local snippet_mappings = { - [''] = {luasnip.jump(1)}, - [''] = {luasnip.jump(-1)} - } - - local wk = require('which-key') - wk.register(snippet_mappings, {mode = "i"}) - wk.register(snippet_mappings, {mode = "s"}) end diff --git a/home/.config/nvim/lua/plugins/init.lua b/home/.config/nvim/lua/plugins/init.lua index 3d5d584..0685119 100644 --- a/home/.config/nvim/lua/plugins/init.lua +++ b/home/.config/nvim/lua/plugins/init.lua @@ -86,7 +86,6 @@ require('packer').startup(function() } use { 'williamboman/mason-lspconfig.nvim', - requires = {'ii14/emmylua-nvim'}, -- vim api documentation for lua lsp config = function() require('mason-lspconfig').setup {automatic_installation = true} end @@ -101,20 +100,28 @@ require('packer').startup(function() -- Display function signature use 'ray-x/lsp_signature.nvim' + -- Snippets plugin + use { + 'L3MON4D3/LuaSnip', + requires = {'rafamadriz/friendly-snippets'}, -- Snippets collection + config = require('plugins.luasnip') + } + + -- vim api documentation for lua lsp + use {'ii14/emmylua-nvim'} + -- Completion use { 'hrsh7th/nvim-cmp', requires = { {'hrsh7th/cmp-buffer'}, -- Buffer source {'petertriho/cmp-git', requires = "nvim-lua/plenary.nvim"}, -- Git source - {'L3MON4D3/LuaSnip'}, -- Snippets plugin {'hrsh7th/cmp-nvim-lsp'}, -- LSP source - {'hrsh7th/cmp-nvim-lua'}, -- Neovim Lua API documentation + {'hrsh7th/cmp-nvim-lua'}, -- Neovim Lua API documentation source {'hrsh7th/cmp-path'}, -- Path source - {'rafamadriz/friendly-snippets'}, -- Snippets collection {'saadparwaiz1/cmp_luasnip'} -- Snippets source }, - config = require('plugins.cmp') + config = require('plugins.cmp'), } -- Automatic brackets @@ -174,7 +181,7 @@ end) -- Sync plugins if Packer was just -- installed -if Packer_installed then +if Packer_bootstrap then print('Syncing plugins') require('packer').sync() end diff --git a/home/.config/nvim/lua/plugins/luasnip.lua b/home/.config/nvim/lua/plugins/luasnip.lua new file mode 100644 index 0000000..8a6137d --- /dev/null +++ b/home/.config/nvim/lua/plugins/luasnip.lua @@ -0,0 +1,15 @@ +return function() + local luasnip = require('luasnip') + local wk = require('which-key') + + -- load friendly-snippets to luasnip + require('luasnip/loaders/from_vscode').lazy_load() + + -- Register snippet navigation keybindings + local snippet_mappings = { + [''] = {luasnip.jump(1)}, + [''] = {luasnip.jump(-1)} + } + wk.register(snippet_mappings, {mode = "i"}) + wk.register(snippet_mappings, {mode = "s"}) +end