add new completion plugins
This commit is contained in:
		| @ -2,64 +2,84 @@ local cmp = require("cmp") | ||||
| local luasnip = require("luasnip") | ||||
|  | ||||
| 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 | ||||
|   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 | ||||
| cmp.setup({ | ||||
|     snippet = { | ||||
|       expand = function(args) | ||||
|         require('luasnip').lsp_expand(args.body) -- For `luasnip` users. | ||||
|       end, | ||||
|     }, | ||||
|     mapping = { | ||||
| 			['<C-k>'] = cmp.mapping.select_prev_item(), | ||||
| 			['<C-j>'] = cmp.mapping.select_next_item(), | ||||
|       ['<C-d>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), | ||||
|       ['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), | ||||
|       ['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), | ||||
|       ['<C-y>'] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping. | ||||
|       ['<C-e>'] = cmp.mapping({ | ||||
|         i = cmp.mapping.abort(), | ||||
|         c = cmp.mapping.close(), | ||||
|       }), | ||||
|       ['<CR>'] = cmp.mapping.confirm({ select = true }), | ||||
| 			['<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' }, -- For luasnip users. | ||||
|     }, { | ||||
|       { name = 'buffer' }, | ||||
|     }) | ||||
|   }) | ||||
|  | ||||
| cmp.setup.cmdline('/',{ | ||||
| sources = { | ||||
| 	{ name = 'buffer' } | ||||
| 	} | ||||
|   snippet = { | ||||
|     expand = function(args) | ||||
|       require('luasnip').lsp_expand(args.body) -- For `luasnip` users. | ||||
|     end, | ||||
|   }, | ||||
|   mapping = { | ||||
|     ['<C-k>'] = cmp.mapping.select_prev_item(), | ||||
|     ['<C-p>'] = cmp.mapping.select_prev_item(), | ||||
|     ['<C-j>'] = cmp.mapping.select_next_item(), | ||||
|     ['<C-n>'] = cmp.mapping.select_next_item(), | ||||
|     ['<C-d>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), | ||||
|     ['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), | ||||
|     ['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), | ||||
|     ['<C-y>'] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping. | ||||
|     ['<C-e>'] = cmp.mapping({ | ||||
|       i = cmp.mapping.abort(), | ||||
|       c = cmp.mapping.close(), | ||||
|     }), | ||||
|     ['<CR>'] = cmp.mapping.confirm({ select = true }), | ||||
|     ['<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 = 'path' }, | ||||
|     { name = 'nvim_lsp', keyword_length = 3 }, | ||||
|     { name = 'nvim_lsp_signature_help' }, | ||||
|     { name = 'nvim_lua', keyword_length = 2 }, | ||||
|     { name = 'nvim_lua', keyword_length = 2 }, | ||||
|     { name = 'buffer' }, | ||||
|     { name = 'luasnip' }, -- For luasnip users. | ||||
|   }), | ||||
|   window = { | ||||
|     completion = cmp.config.window.bordered(), | ||||
|     documentation = cmp.config.window.bordered(), | ||||
|   }, | ||||
|   formatting = { | ||||
|     fields = { 'menu', 'abbr', 'kind' }, | ||||
|     format = function(entry, item) | ||||
|       local menu_icon = { | ||||
|         nvim_lsp = 'λ', | ||||
|         buffer = 'Ω' | ||||
|       } | ||||
|       item.menu = menu_icon[entry.source.name] | ||||
|       return item | ||||
|     end | ||||
|   } | ||||
| }) | ||||
|  | ||||
| cmp.setup.cmdline(':',{ | ||||
| sources = cmp.config.sources({ | ||||
| {name = 'path'} | ||||
| },{{name='cmdline'}}) | ||||
| cmp.setup.cmdline('/', { | ||||
|   sources = { | ||||
|     { name = 'buffer' } | ||||
|   } | ||||
| }) | ||||
|  | ||||
| cmp.setup.cmdline(':', { | ||||
|   sources = cmp.config.sources({ | ||||
|     { name = 'path' } | ||||
|   }, { { name = 'cmdline' } }) | ||||
| }) | ||||
|  | ||||
| @ -25,8 +25,12 @@ require("packer").startup(function(use) | ||||
|     "kosayoda/nvim-lightbulb", | ||||
|   }) | ||||
|   use("hrsh7th/cmp-nvim-lsp") | ||||
|   use("hrsh7th/cmp-nvim-lsp-signature-help") | ||||
|   use("hrsh7th/cmp-nvim-lua") | ||||
|   use("hrsh7th/cmp-buffer") | ||||
|   use("hrsh7th/cmp-path") | ||||
|   use("hrsh7th/cmp-vsnip") | ||||
|   use("hrsh7th/vim-vsnip") | ||||
|   use("hrsh7th/nvim-cmp") | ||||
|   use("hrsh7th/cmp-cmdline") | ||||
|   use("saadparwaiz1/cmp_luasnip") | ||||
|  | ||||
		Reference in New Issue
	
	Block a user