summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/setup/nvim-cmp.lua
diff options
context:
space:
mode:
authorAdam <56338480+adastx@users.noreply.github.com>2022-03-12 17:38:32 +0100
committerAdam <56338480+adastx@users.noreply.github.com>2022-03-13 17:58:45 +0100
commita429e351263d07e9d032cd9d5e820c675b790d9b (patch)
tree68da1ae8a7dcd74cfad254f8b8c7fcc33f1de855 /.config/nvim/lua/setup/nvim-cmp.lua
parent5a908c6cbcdba880f7f267c9a238c492d021ac0c (diff)
nvim: better lazy loading
Diffstat (limited to '.config/nvim/lua/setup/nvim-cmp.lua')
-rw-r--r--.config/nvim/lua/setup/nvim-cmp.lua51
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 }')