diff options
author | adamstuck <adam.moloney.stuck@gmail.com> | 2022-03-12 17:38:32 +0100 |
---|---|---|
committer | adamstuck <adam.moloney.stuck@gmail.com> | 2022-03-12 22:47:03 +0100 |
commit | 8cc68ac8a50756dfc21ce269a969bd7897e173fd (patch) | |
tree | f05d8b44e06d6166115a3b68d30239941fd34931 /.config/nvim/lua/setup/nvim-cmp.lua | |
parent | d394e7dc27de4416f3ba74da736a5251c19a36f4 (diff) |
nvim: config cleanup + speedup (lazy load)
Diffstat (limited to '.config/nvim/lua/setup/nvim-cmp.lua')
-rw-r--r-- | .config/nvim/lua/setup/nvim-cmp.lua | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/.config/nvim/lua/setup/nvim-cmp.lua b/.config/nvim/lua/setup/nvim-cmp.lua new file mode 100644 index 0000000..42bf348 --- /dev/null +++ b/.config/nvim/lua/setup/nvim-cmp.lua @@ -0,0 +1,51 @@ +local has_words_before = function() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil +end + +local luasnip = require("luasnip") +local cmp = require("cmp") +require("luasnip/loaders/from_vscode").lazy_load() +vim.o.completeopt = 'menuone,noselect' + +cmp.setup { + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + mapping = { + ['<CR>'] = cmp.mapping.confirm({ select = true }), + ['<C-n>'] = cmp.mapping.select_next_item(), + ['<C-p>'] = cmp.mapping.select_prev_item(), + ['<C-f>'] = cmp.mapping.scroll_docs(4), + ['<C-d>'] = cmp.mapping.scroll_docs(-4), + ['<C-e>'] = cmp.mapping.close(), + ["<Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + + ["<S-Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, +} +vim.cmd('autocmd FileType markdown lua require("cmp").setup.buffer { enabled = false }') |