summaryrefslogtreecommitdiffstats
path: root/lua/plugins/cmp.lua
diff options
context:
space:
mode:
authorNanderty <psopka@sopka.ch>2023-03-20 16:29:49 +0100
committerNanderty <psopka@sopka.ch>2023-03-20 16:29:49 +0100
commit7111388965e01e9c712dfc2288028952fe78b664 (patch)
tree5f499fc0fbfc2122066b86d02987604146bd5e09 /lua/plugins/cmp.lua
parent423133102d96556d121a97689be1f4f6542e320c (diff)
downloadneovim-config-7111388965e01e9c712dfc2288028952fe78b664.tar.gz
neovim-config-7111388965e01e9c712dfc2288028952fe78b664.tar.bz2
neovim-config-7111388965e01e9c712dfc2288028952fe78b664.zip
lazyvim
Diffstat (limited to 'lua/plugins/cmp.lua')
-rw-r--r--lua/plugins/cmp.lua80
1 files changed, 80 insertions, 0 deletions
diff --git a/lua/plugins/cmp.lua b/lua/plugins/cmp.lua
new file mode 100644
index 0000000..6015356
--- /dev/null
+++ b/lua/plugins/cmp.lua
@@ -0,0 +1,80 @@
+return {
+ {
+ 'L3MON4D3/LuaSnip',
+ dependencies = {
+ 'iurimateus/luasnip-latex-snippets.nvim',
+ 'rafamadriz/friendly-snippets',
+ },
+ config = function()
+ require('luasnip-latex-snippets').setup()
+ require("luasnip.loaders.from_lua").lazy_load()
+ require("luasnip.loaders.from_vscode").lazy_load()
+ end
+ },
+ {
+ 'hrsh7th/nvim-cmp',
+ event = 'InsertEnter',
+ dependencies = {
+ 'hrsh7th/cmp-nvim-lsp',
+ 'hrsh7th/cmp-buffer',
+ 'hrsh7th/cmp-path',
+ 'saadparwaiz1/cmp_luasnip',
+ },
+
+ opts = function()
+ local has_words_before = function()
+ unpack = unpack or table.unpack
+ 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')
+
+ luasnip.config.set_config({
+ history = true,
+ enable_autosnippets = true,
+ })
+
+ return {
+ snippet = {
+ expand = function(args)
+ require('luasnip').lsp_expand(args.body)
+ end,
+ },
+ mapping = cmp.mapping.preset.insert({
+
+ ['<Space>'] = cmp.mapping.confirm({ select = false }),
+
+ ["<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 = cmp.config.sources({
+ { name = 'nvim_lsp' },
+ { name = 'luasnip' },
+ { name = 'buffer' },
+ { name = 'path' },
+ })
+ }
+ end,
+ },
+}