diff options
author | Adam <56338480+adastx@users.noreply.github.com> | 2022-03-12 17:38:32 +0100 |
---|---|---|
committer | Adam <56338480+adastx@users.noreply.github.com> | 2022-03-13 17:58:45 +0100 |
commit | a429e351263d07e9d032cd9d5e820c675b790d9b (patch) | |
tree | 68da1ae8a7dcd74cfad254f8b8c7fcc33f1de855 /.config/nvim/lua/setup/nvim-cmp.lua | |
parent | 5a908c6cbcdba880f7f267c9a238c492d021ac0c (diff) |
nvim: better lazy loading
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..584da73 --- /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 }') |