neovim conf based on kickstart.nvim
1-- You can add your own plugins here or in other files in this directory!
2-- I promise not to create any merge conflicts in this directory :)
3--
4-- See the kickstart.nvim README for more information
5
6---@module 'lazy'
7---@type LazySpec
8return {
9 { 'RRethy/base16-nvim', config = function() require('matugen').setup() end },
10 {
11 'folke/flash.nvim',
12 event = 'VeryLazy',
13 ---@type Flash.Config
14 opts = {},
15 keys = {
16 { 's', mode = { 'n', 'x', 'o' }, function() require('flash').jump() end, desc = 'Flash' },
17 { 'S', mode = { 'n', 'x', 'o' }, function() require('flash').treesitter() end, desc = 'Flash Treesitter' },
18 { 'r', mode = 'o', function() require('flash').remote() end, desc = 'Remote Flash' },
19 { 'R', mode = { 'o', 'x' }, function() require('flash').treesitter_search() end, desc = 'Treesitter Search' },
20 { '<c-s>', mode = { 'c' }, function() require('flash').toggle() end, desc = 'Toggle Flash Search' },
21 },
22 },
23 {
24 'folke/trouble.nvim',
25 cmd = { 'Trouble' },
26 opts = {
27 modes = {
28 lsp = {
29 win = { position = 'right' },
30 },
31 },
32 },
33 keys = {
34 { '<leader>xx', '<cmd>Trouble diagnostics toggle<cr>', desc = 'Diagnostics (Trouble)' },
35 { '<leader>xX', '<cmd>Trouble diagnostics toggle filter.buf=0<cr>', desc = 'Buffer Diagnostics (Trouble)' },
36 { '<leader>cs', '<cmd>Trouble symbols toggle<cr>', desc = 'Symbols (Trouble)' },
37 { '<leader>cS', '<cmd>Trouble lsp toggle<cr>', desc = 'LSP references/definitions/... (Trouble)' },
38 { '<leader>xL', '<cmd>Trouble loclist toggle<cr>', desc = 'Location List (Trouble)' },
39 { '<leader>xQ', '<cmd>Trouble qflist toggle<cr>', desc = 'Quickfix List (Trouble)' },
40 {
41 '[q',
42 function()
43 if require('trouble').is_open() then
44 require('trouble').prev { skip_groups = true, jump = true }
45 else
46 local ok, err = pcall(vim.cmd.cprev)
47 if not ok then vim.notify(err, vim.log.levels.ERROR) end
48 end
49 end,
50 desc = 'Previous Trouble/Quickfix Item',
51 },
52 {
53 ']q',
54 function()
55 if require('trouble').is_open() then
56 require('trouble').next { skip_groups = true, jump = true }
57 else
58 local ok, err = pcall(vim.cmd.cnext)
59 if not ok then vim.notify(err, vim.log.levels.ERROR) end
60 end
61 end,
62 desc = 'Next Trouble/Quickfix Item',
63 },
64 },
65 },
66 {
67 'folke/lazydev.nvim',
68 ft = 'lua',
69 cmd = 'LazyDev',
70 opts = {
71 library = {
72 { path = '${3rd}/luv/library', words = { 'vim%.uv' } },
73 { path = 'snacks.nvim', words = { 'Snacks' } },
74 { path = 'lazy.nvim', words = { 'LazyVim' } },
75 },
76 },
77 },
78 {
79 'MagicDuck/grug-far.nvim',
80 opts = { headerMaxWidth = 80 },
81 cmd = { 'GrugFar', 'GrugFarWithin' },
82 keys = {
83 {
84 '<leader>sr',
85 function()
86 local grug = require 'grug-far'
87 local ext = vim.bo.buftype == '' and vim.fn.expand '%:e'
88 grug.open {
89 transient = true,
90 prefills = {
91 filesFilter = ext and ext ~= '' and '*.' .. ext or nil,
92 },
93 }
94 end,
95 mode = { 'n', 'x' },
96 desc = 'Search and Replace',
97 },
98 },
99 },
100 {
101 'mistweaverco/kulala.nvim',
102 keys = {
103 { '<leader>Rs', desc = 'Send request' },
104 { '<leader>Ra', desc = 'Send all requests' },
105 { '<leader>Rb', desc = 'Open scratchpad' },
106 },
107 ft = { 'http', 'rest' },
108 opts = {
109 global_keymaps = false,
110 global_keymaps_prefix = '<leader>R',
111 kulala_keymaps_prefix = '',
112 vscode_rest_client_environmentvars = false,
113 },
114 },
115 {
116 'gbprod/yanky.nvim',
117 recommended = true,
118 desc = 'Better Yank/Paste',
119 opts = {
120 system_clipboard = {
121 sync_with_ring = not vim.env.SSH_CONNECTION,
122 },
123 highlight = { timer = 150 },
124 },
125 keys = {
126 {
127 '<leader>p',
128 function() Snacks.picker.yanky() end,
129 mode = { 'n', 'x' },
130 desc = 'Open Yank History',
131 },
132 -- stylua: ignore
133 { "y", "<Plug>(YankyYank)", mode = { "n", "x" }, desc = "Yank Text" },
134 { 'p', '<Plug>(YankyPutAfter)', mode = { 'n', 'x' }, desc = 'Put Text After Cursor' },
135 { 'P', '<Plug>(YankyPutBefore)', mode = { 'n', 'x' }, desc = 'Put Text Before Cursor' },
136 { 'gp', '<Plug>(YankyGPutAfter)', mode = { 'n', 'x' }, desc = 'Put Text After Selection' },
137 { 'gP', '<Plug>(YankyGPutBefore)', mode = { 'n', 'x' }, desc = 'Put Text Before Selection' },
138 { '[y', '<Plug>(YankyCycleForward)', desc = 'Cycle Forward Through Yank History' },
139 { ']y', '<Plug>(YankyCycleBackward)', desc = 'Cycle Backward Through Yank History' },
140 { ']p', '<Plug>(YankyPutIndentAfterLinewise)', desc = 'Put Indented After Cursor (Linewise)' },
141 { '[p', '<Plug>(YankyPutIndentBeforeLinewise)', desc = 'Put Indented Before Cursor (Linewise)' },
142 { ']P', '<Plug>(YankyPutIndentAfterLinewise)', desc = 'Put Indented After Cursor (Linewise)' },
143 { '[P', '<Plug>(YankyPutIndentBeforeLinewise)', desc = 'Put Indented Before Cursor (Linewise)' },
144 { '>p', '<Plug>(YankyPutIndentAfterShiftRight)', desc = 'Put and Indent Right' },
145 { '<p', '<Plug>(YankyPutIndentAfterShiftLeft)', desc = 'Put and Indent Left' },
146 { '>P', '<Plug>(YankyPutIndentBeforeShiftRight)', desc = 'Put Before and Indent Right' },
147 { '<P', '<Plug>(YankyPutIndentBeforeShiftLeft)', desc = 'Put Before and Indent Left' },
148 { '=p', '<Plug>(YankyPutAfterFilter)', desc = 'Put After Applying a Filter' },
149 { '=P', '<Plug>(YankyPutBeforeFilter)', desc = 'Put Before Applying a Filter' },
150 },
151 },
152 {
153 'stevearc/aerial.nvim',
154 opts = {},
155 -- Optional dependencies
156 dependencies = {
157 'nvim-treesitter/nvim-treesitter',
158 },
159 },
160 {
161 'ThePrimeagen/refactoring.nvim',
162 dependencies = {
163 'nvim-lua/plenary.nvim',
164 'nvim-treesitter/nvim-treesitter',
165 },
166 lazy = false,
167 opts = {},
168 },
169 {
170 'smjonas/inc-rename.nvim',
171 cmd = 'IncRename',
172 opts = {},
173 },
174}