return { { 'windwp/nvim-autopairs', event = "InsertEnter", config = true }, { 'jinh0/eyeliner.nvim', event = 'VeryLazy', init = function() vim.api.nvim_set_hl(0, 'EyelinerPrimary', { underline = true }) vim.api.nvim_set_hl(0, 'EyelinerSecondary', { underline = true }) end, }, { 'tiagovla/scope.nvim', event = 'VeryLazy', config = true }, { 'sindrets/diffview.nvim', event = 'VeryLazy', opts = { enhanced_diff_hl = true, default_args = { DiffviewOpen = { '--imply-local' }, }, keymaps = { view = { { { "n" }, "q", vim.cmd.DiffviewClose, { desc = "Close Diffview" } }, }, file_panel = { { { "n" }, "q", vim.cmd.DiffviewClose, { desc = "Close Diffview" } }, }, file_history_panel = { { { "n" }, "q", vim.cmd.DiffviewClose, { desc = "Close Diffview" } }, } } }, keys = { { 'nb', vim.cmd.DiffviewOpen, noremap = true, desc = 'diffview open' } }, }, { 'NeogitOrg/neogit', opts = { disable_builtin_notifications = true, integrations = { diffview = true, }, }, keys = { { 'ng', function() require('neogit').open() end, { noremap = true, silent = true, desc = 'Neogit' }, }, }, }, { 'EdenEast/nightfox.nvim', lazy = false, priority = 1000, opts = { options = { transparent = true, terminal_colors = true, modules = { "mini", "treesitter", "neogit", } }, }, config = function(_, opts) require('nightfox').setup(opts) vim.cmd('colorscheme terafox') vim.api.nvim_set_hl(0, 'StatusLine', { bg = 'none' }) vim.api.nvim_set_hl(0, 'StatusLineNC', { bg = 'none' }) vim.api.nvim_set_hl(0, 'GitSignsAdd', { fg = 'green', bold = true }) vim.api.nvim_set_hl(0, 'GitSignsDelete', { fg = 'red', bold = true }) vim.api.nvim_set_hl(0, 'GitSignsChange', { fg = 'green', bold = true }) vim.api.nvim_set_hl(0, 'GitSignsCurrentLineBlame', { link = 'Comment' }) end, }, { 'lewis6991/gitsigns.nvim', event = 'VeryLazy', opts = { signcolumn = false, numhl = true, on_attach = function() local gs = package.loaded.gitsigns vim.keymap.set('n', 'gg', gs.preview_hunk, { desc = 'git preview hunk' }) vim.keymap.set('n', 'gR', gs.reset_hunk, { desc = 'git reset hunk' }) vim.keymap.set('n', 'gs', gs.stage_hunk, { desc = 'git stage hunk' }) vim.keymap.set('n', 'gd', gs.diffthis, { desc = 'git diff hunk' }) vim.keymap.set('n', 'gb', function() gs.blame_line { full = true } end, { desc = 'git blame_line current' }) vim.keymap.set('n', 'gB', gs.toggle_current_line_blame, { desc = 'git blame_line toggle' }) vim.keymap.set('v', 'gR', function() gs.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end, { desc = 'git reset hunk' }) -- Navigation vim.keymap.set('n', ']g', function() if vim.wo.diff then return ']c' end vim.schedule(function() gs.next_hunk({ target = 'all' }) end) return '' end, { expr = true }) vim.keymap.set('n', '[g', function() if vim.wo.diff then return '[c' end vim.schedule(function() gs.prev_hunk({ target = 'all' }) end) return '' end, { expr = true }) end, }, }, { 'gbprod/yanky.nvim', opts = { ring = { storage = "memory", }, picker = { select = { action = require('yanky.picker').actions.set_register("+") } } }, keys = { { "y", "(YankyYank)", mode = { "n", "x" } }, { "fp", "YankyRingHistory", mode = { "n", "x" }, noremap = true, silent = true, desc = 'Pick history (yanky.nvim)' } }, }, }