summaryrefslogtreecommitdiff
path: root/lua/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'lua/plugins')
-rw-r--r--lua/plugins/cmp.lua36
1 files changed, 26 insertions, 10 deletions
diff --git a/lua/plugins/cmp.lua b/lua/plugins/cmp.lua
index 6c09612..ac9e746 100644
--- a/lua/plugins/cmp.lua
+++ b/lua/plugins/cmp.lua
@@ -1,3 +1,8 @@
+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
+
-- luasnip setup
local luasnip = require 'luasnip'
@@ -50,14 +55,15 @@ cmp.setup {
return vim_item
end
},
- view = {
- entries = "custom",
- },
snippet = {
expand = function(args)
require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
end,
},
+ window = {
+ completion = cmp.config.window.bordered(),
+ documentation = cmp.config.window.bordered(),
+ },
mapping = cmp.mapping.preset.insert({
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
@@ -71,10 +77,12 @@ cmp.setup {
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' }),
+ end, { "i", "s" }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
@@ -85,14 +93,14 @@ cmp.setup {
end
end, { 'i', 's' }),
}),
- sources = {
+ sources = cmp.config.sources({
+ { name = 'luasnip', option = { use_show_condition = false } },
+ { name = 'nvim_lsp' },
+ { name = 'nvim_lsp_signature_help' },
{ name = 'path' },
{ name = 'buffer' },
- { name = 'nvim_lsp_signature_help' },
- { name = 'nvim_lsp' },
- { name = 'luasnip' },
{ name = 'nvim_lua' },
- },
+ }),
}
-- Set configuration for specific filetype.
cmp.setup.filetype('gitcommit', {
@@ -111,7 +119,15 @@ require'cmp'.setup.cmdline('/', {
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
require'cmp'.setup.cmdline(':', {
sources = {
- { name = 'cmdline' },
{ name = 'path' }, -- cmp-path needed
}
})
+
+-- lazy loading to get in memory snippets of languages you use
+require("luasnip/loaders/from_vscode").lazy_load()
+local keymap = vim.api.nvim_set_keymap
+local opts = { noremap = true, silent = true }
+keymap("i", "<c-j>", "<cmd>lua require'luasnip'.jump(1)<CR>", opts)
+keymap("s", "<c-j>", "<cmd>lua require'luasnip'.jump(1)<CR>", opts)
+keymap("i", "<c-k>", "<cmd>lua require'luasnip'.jump(-1)<CR>", opts)
+keymap("s", "<c-k>", "<cmd>lua require'luasnip'.jump(-1)<CR>", opts)