return { { 'max397574/better-escape.nvim', event = 'InsertEnter', opts = { k = function() vim.api.nvim_input('') local current_line = vim.api.nvim_get_current_line() if current_line:match('^%s+j$') then vim.schedule(function() vim.api.nvim_set_current_line('') end) end end, }, }, { 'L3MON4D3/LuaSnip', event = { 'BufReadPost', 'BufNewFile' }, dependencies = { 'rafamadriz/friendly-snippets', 'mstuttgart/odoo-snippets', }, opts = { history = true, updateevents = 'TextChanged,TextChangedI', }, keys = function() return {} end, config = function() require('luasnip.loaders.from_vscode').lazy_load() end, }, { 'altermo/ultimate-autopair.nvim', event = { 'InsertEnter', 'CmdlineEnter' }, branch = 'v0.6', --recommended as each new version will have breaking changes opts = {}, }, { 'hrsh7th/nvim-cmp', event = { 'InsertEnter' }, dependencies = { -- autocomplete plugins 'hrsh7th/cmp-buffer', 'hrsh7th/cmp-path', 'hrsh7th/cmp-cmdline', 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-nvim-lua', 'saadparwaiz1/cmp_luasnip', -- "hrsh7th/cmp-nvim-lsp-signature-help", -- "hrsh7th/cmp-calc", -- vscode like icons to autocomplete list 'onsails/lspkind.nvim', -- snippet plugin { 'L3MON4D3/LuaSnip', event = { 'BufReadPost', 'BufNewFile' } }, { 'rafamadriz/friendly-snippets', event = { 'BufReadPost', 'BufNewFile' } }, }, config = function() require('configs.cmp') end, }, { 'Exafunction/codeium.vim', event = 'InsertEnter', config = function() local cmp = require('cmp') cmp.event:on('menu_opened', function() vim.g.codeium_manual = true vim.fn['codeium#Clear']() end) cmp.event:on('menu_closed', function() vim.g.codeium_manual = false vim.fn['codeium#Complete']() end) vim.g.codeium_filetypes = { TelescopePrompt = false, DressingInput = false, ['neo-tree-popup'] = false, ['dap-repl'] = false, } local opts = { expr = true, silent = true } vim.g.codeium_disable_bindings = 1 vim.keymap.set('i', '', function() return vim.fn['codeium#Accept']() end, opts) vim.keymap.set('n', 'ch', function() return vim.fn['codeium#Chat']() end, { desc = 'Chat with IA (Codeium)' }) vim.keymap.set('i', '', function() return vim.fn['codeium#CycleCompletions'](1) end, opts) vim.keymap.set('i', '', function() return vim.fn['codeium#CycleCompletions'](-1) end, opts) vim.keymap.set('i', '', function() return vim.fn['codeium#Clear']() end, opts) vim.keymap.set('n', 'cI', 'CodeiumToggle', { desc = 'Toggle IA (Codeium)' }) end, }, { 'nacro90/numb.nvim', event = 'CmdlineEnter', config = function() require('numb').setup({ show_numbers = true, -- Enable 'number' for the window while peeking show_cursorline = true, -- Enable 'cursorline' for the window while peeking hide_relativenumbers = true, -- Enable turning off 'relativenumber' for the window while peeking number_only = false, -- Peek only when the command is only a number instead of when it starts with a number centered_peeking = true, -- Peeked line will be centered relative to window }) end, }, { 'NStefan002/screenkey.nvim', cmd = 'Screenkey', version = '*', vim.keymap.set('n', 'kt', 'Screenkey', { desc = 'Toggle keys' }), config = function() require('screenkey').setup({ win_opts = { relative = 'editor', anchor = 'SE', width = 40, height = 1, border = 'single', }, compress_after = 3, clear_after = 3, disable = { filetypes = {}, -- for example: "toggleterm" buftypes = {}, -- for example: "terminal" }, }) end, }, { 'gbprod/yanky.nvim', event = 'BufReadPost', keys = { { '', '(YankyCycleForward)' }, { '', '(YankyCycleBackward)' }, { 'yp', function() require('telescope').extensions.yank_history.yank_history({}) end, desc = 'Open Yank History', }, { 'y', '(YankyYank)', mode = { 'n', 'x' }, desc = 'Yank text' }, { 'p', '(YankyPutAfter)', mode = { 'n', 'x' }, desc = 'Put yanked text after cursor' }, { 'P', '(YankyPutBefore)', mode = { 'n', 'x' }, desc = 'Put yanked text before cursor' }, { 'gp', '(YankyGPutAfter)', mode = { 'n', 'x' }, desc = 'Put yanked text after selection' }, { 'gP', '(YankyGPutBefore)', mode = { 'n', 'x' }, desc = 'Put yanked text before selection' }, -- This is not plugin keymaps { 'yP', 'CopyAbsolutePath', desc = 'Absolute Path' }, { 'ya', '%y+', desc = 'Copy Whole File' }, { 'yf', 'CopyFileName', desc = 'File Name' }, { 'yg', 'lua require"gitlinker".get_buf_range_url()', desc = 'Copy Git URL' }, { 'yp', 'CopyRelativePath', desc = 'Relative Path' }, }, opts = { highlight = { timer = 150, }, }, }, { { 'LudoPinelli/comment-box.nvim', opts = {}, vscode = true, keys = { { 'Cb', 'CBccbox', mode = { 'n', 'v' }, desc = 'Comment Box' }, { 'Ct', 'CBllline', mode = { 'n', 'v' }, desc = 'Tiled line' }, { 'Cl', 'CBline', desc = 'Line' }, { 'Cm', 'CBllbox14', mode = { 'n', 'v' }, desc = 'Marked' }, { 'Cc', 'CBcatalog', desc = 'Catalog' }, { 'Cd', 'CBd', mode = { 'n', 'v' }, desc = 'Delete Comment Style' }, }, }, }, { 'm-demare/hlargs.nvim', event = { 'BufReadPost', 'BufNewFile' }, }, { 'numToStr/Navigator.nvim', keys = { { '', 'NavigatorLeft' }, { '', 'NavigatorDown' }, { '', 'NavigatorUp' }, { '', 'NavigatorRight' }, { '', 'NavigatorPrevious' }, }, config = function() require('Navigator').setup() end, }, }