From 9d5f4047ca83a89ba310fdbcfed4510f77acde98 Mon Sep 17 00:00:00 2001 From: Markus Date: Thu, 13 Oct 2022 23:53:00 +0200 Subject: [PATCH] add new completion plugins --- nvim/lua/cmp_config.lua | 132 +++++++++++++++++++++++----------------- nvim/lua/plugins.lua | 4 ++ 2 files changed, 80 insertions(+), 56 deletions(-) diff --git a/nvim/lua/cmp_config.lua b/nvim/lua/cmp_config.lua index b0b038f..a4bcaed 100644 --- a/nvim/lua/cmp_config.lua +++ b/nvim/lua/cmp_config.lua @@ -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 = { - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), - [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), - [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), - [''] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. - [''] = cmp.mapping({ - i = cmp.mapping.abort(), - c = cmp.mapping.close(), - }), - [''] = cmp.mapping.confirm({ select = true }), - [''] = 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"}), - [''] = 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 = { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), + [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), + [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), + [''] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. + [''] = cmp.mapping({ + i = cmp.mapping.abort(), + c = cmp.mapping.close(), + }), + [''] = cmp.mapping.confirm({ select = true }), + [''] = 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" }), + [''] = 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' } }) }) diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index 890fb8b..fafbef6 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -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")