return { { "onsails/lspkind.nvim", opts = { symbol_map = require "plugins.configs.ui.lspkind", }, }, { "hrsh7th/nvim-cmp", opts = function(_, opts) local cmp = require "cmp" local luasnip = require "luasnip" local function has_words_before() local line, col = (unpack or table.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 return require("astrocore").extend_tbl(opts, { -- Configure window style window = { completion = { winhighlight = "Normal:Pmenu,CursorLine:PmenuSel,Search:None", -- border = "none", side_padding = 0, }, }, formatting = { -- Show icon at the beginning and menu at the end fields = { "kind", "abbr", "menu" }, format = function(entry, vim_item) local kind = require("lspkind").cmp_format { mode = "symbol_text", maxwidth = 50 }(entry, vim_item) local strings = vim.split(kind.kind, "%s", { trimetry = true }) kind.kind = " " .. (strings[1] or "") .. " " kind.menu = " [" .. (strings[2] or "") .. "]" return kind end, }, -- Always select the first option completion = { completeopt = "menu,menuone,noinsert", }, -- Custom mapping mapping = { -- Esc to close completion menu [""] = cmp.mapping { i = cmp.mapping.abort(), c = cmp.mapping.close() }, -- Tab to select completion [""] = cmp.mapping(function(fallback) if cmp.visible() and has_words_before() then cmp.confirm { select = true } else fallback() end end, { "i", "s" }), -- Use and to select luasnip [""] = cmp.mapping(function(fallback) if luasnip.jumpable(1) then luasnip.jump(1) else fallback() end end, { "i", "s" }), [""] = cmp.mapping(function(fallback) if luasnip.jumpable(-1) then luasnip.jump(-1) else fallback() end end, { "i", "s" }), }, experimental = { ghost_text = false, -- this feature conflict with copilot.vim's preview. }, }) end, }, -- { -- "neovim/nvim-lspconfig", -- opts = function(_, opts) -- local lspconfig = require "lspconfig" -- -- Setup `jedi-language-server` for Python files -- lspconfig.jedi_language_server.setup { -- on_attach = opts.on_attach, -- capabilities = opts.capabilities, -- filetypes = { "python" }, -- } -- -- Optionally, you can disable pyright -- lspconfig.pyright.setup { -- filetypes = {}, -- } -- end, -- }, }