-- You can add your own plugins here or in other files in this directory! -- I promise not to create any merge conflicts in this directory :) -- -- See the kickstart.nvim README for more information ---@module 'lazy' ---@type LazySpec return { { 'RRethy/base16-nvim', config = function() require('matugen').setup() end }, { 'folke/flash.nvim', event = 'VeryLazy', ---@type Flash.Config opts = {}, keys = { { 's', mode = { 'n', 'x', 'o' }, function() require('flash').jump() end, desc = 'Flash' }, { 'S', mode = { 'n', 'x', 'o' }, function() require('flash').treesitter() end, desc = 'Flash Treesitter' }, { 'r', mode = 'o', function() require('flash').remote() end, desc = 'Remote Flash' }, { 'R', mode = { 'o', 'x' }, function() require('flash').treesitter_search() end, desc = 'Treesitter Search' }, { '', mode = { 'c' }, function() require('flash').toggle() end, desc = 'Toggle Flash Search' }, }, }, { 'folke/trouble.nvim', cmd = { 'Trouble' }, opts = { modes = { lsp = { win = { position = 'right' }, }, }, }, keys = { { 'xx', 'Trouble diagnostics toggle', desc = 'Diagnostics (Trouble)' }, { 'xX', 'Trouble diagnostics toggle filter.buf=0', desc = 'Buffer Diagnostics (Trouble)' }, { 'cs', 'Trouble symbols toggle', desc = 'Symbols (Trouble)' }, { 'cS', 'Trouble lsp toggle', desc = 'LSP references/definitions/... (Trouble)' }, { 'xL', 'Trouble loclist toggle', desc = 'Location List (Trouble)' }, { 'xQ', 'Trouble qflist toggle', desc = 'Quickfix List (Trouble)' }, { '[q', function() if require('trouble').is_open() then require('trouble').prev { skip_groups = true, jump = true } else local ok, err = pcall(vim.cmd.cprev) if not ok then vim.notify(err, vim.log.levels.ERROR) end end end, desc = 'Previous Trouble/Quickfix Item', }, { ']q', function() if require('trouble').is_open() then require('trouble').next { skip_groups = true, jump = true } else local ok, err = pcall(vim.cmd.cnext) if not ok then vim.notify(err, vim.log.levels.ERROR) end end end, desc = 'Next Trouble/Quickfix Item', }, }, }, { 'folke/lazydev.nvim', ft = 'lua', cmd = 'LazyDev', opts = { library = { { path = '${3rd}/luv/library', words = { 'vim%.uv' } }, { path = 'snacks.nvim', words = { 'Snacks' } }, { path = 'lazy.nvim', words = { 'LazyVim' } }, }, }, }, { 'MagicDuck/grug-far.nvim', opts = { headerMaxWidth = 80 }, cmd = { 'GrugFar', 'GrugFarWithin' }, keys = { { 'sr', function() local grug = require 'grug-far' local ext = vim.bo.buftype == '' and vim.fn.expand '%:e' grug.open { transient = true, prefills = { filesFilter = ext and ext ~= '' and '*.' .. ext or nil, }, } end, mode = { 'n', 'x' }, desc = 'Search and Replace', }, }, }, { 'mistweaverco/kulala.nvim', keys = { { 'Rs', desc = 'Send request' }, { 'Ra', desc = 'Send all requests' }, { 'Rb', desc = 'Open scratchpad' }, }, ft = { 'http', 'rest' }, opts = { global_keymaps = false, global_keymaps_prefix = 'R', kulala_keymaps_prefix = '', vscode_rest_client_environmentvars = false, }, }, { 'gbprod/yanky.nvim', recommended = true, desc = 'Better Yank/Paste', opts = { system_clipboard = { sync_with_ring = not vim.env.SSH_CONNECTION, }, highlight = { timer = 150 }, }, keys = { { 'p', function() Snacks.picker.yanky() end, mode = { 'n', 'x' }, desc = 'Open Yank History', }, -- stylua: ignore { "y", "(YankyYank)", mode = { "n", "x" }, desc = "Yank Text" }, { 'p', '(YankyPutAfter)', mode = { 'n', 'x' }, desc = 'Put Text After Cursor' }, { 'P', '(YankyPutBefore)', mode = { 'n', 'x' }, desc = 'Put Text Before Cursor' }, { 'gp', '(YankyGPutAfter)', mode = { 'n', 'x' }, desc = 'Put Text After Selection' }, { 'gP', '(YankyGPutBefore)', mode = { 'n', 'x' }, desc = 'Put Text Before Selection' }, { '[y', '(YankyCycleForward)', desc = 'Cycle Forward Through Yank History' }, { ']y', '(YankyCycleBackward)', desc = 'Cycle Backward Through Yank History' }, { ']p', '(YankyPutIndentAfterLinewise)', desc = 'Put Indented After Cursor (Linewise)' }, { '[p', '(YankyPutIndentBeforeLinewise)', desc = 'Put Indented Before Cursor (Linewise)' }, { ']P', '(YankyPutIndentAfterLinewise)', desc = 'Put Indented After Cursor (Linewise)' }, { '[P', '(YankyPutIndentBeforeLinewise)', desc = 'Put Indented Before Cursor (Linewise)' }, { '>p', '(YankyPutIndentAfterShiftRight)', desc = 'Put and Indent Right' }, { '(YankyPutIndentAfterShiftLeft)', desc = 'Put and Indent Left' }, { '>P', '(YankyPutIndentBeforeShiftRight)', desc = 'Put Before and Indent Right' }, { '(YankyPutIndentBeforeShiftLeft)', desc = 'Put Before and Indent Left' }, { '=p', '(YankyPutAfterFilter)', desc = 'Put After Applying a Filter' }, { '=P', '(YankyPutBeforeFilter)', desc = 'Put Before Applying a Filter' }, }, }, { 'stevearc/aerial.nvim', opts = {}, -- Optional dependencies dependencies = { 'nvim-treesitter/nvim-treesitter', }, }, { 'ThePrimeagen/refactoring.nvim', dependencies = { 'nvim-lua/plenary.nvim', 'nvim-treesitter/nvim-treesitter', }, lazy = false, opts = {}, }, { 'smjonas/inc-rename.nvim', cmd = 'IncRename', opts = {}, }, }