]> git.rmz.io Git - dotfiles.git/blob - nvim/lua/plugins/editor.lua
b4816a0c0f0a206189f4874b85f690f1c4aa68da
[dotfiles.git] / nvim / lua / plugins / editor.lua
1 ---@type LazyPluginSpec
2 return {
3 {
4 "nvim-telescope/telescope.nvim",
5 keys = {
6 { "<leader>fF", LazyVim.pick("files", { cwd = false }), desc = "Find Files (cwd)" },
7 -- from lazyvim
8 { "<leader>,", "<cmd>Telescope buffers show_all_buffers=true<cr>", desc = "Switch Buffer" },
9 { "<leader>/", LazyVim.pick("live_grep"), desc = "Grep (root dir)" },
10 { "<leader>:", "<cmd>Telescope command_history<cr>", desc = "Command History" },
11 { "<leader><space>", LazyVim.pick("files"), desc = "Find Files (root dir)" },
12 { "<leader><space>", false },
13 -- find
14 { "<leader>fb", "<cmd>Telescope buffers sort_lastused=true<CR>", desc = "Buffers" },
15 -- { "<leader>ff", LazyVim.pick("files"), desc = "Find Files (root dir)" },
16 { "<leader>ff", false }, -- fswitch
17 { "<leader>fF", LazyVim.pick("files", { cwd = false }), desc = "Find Files (cwd)" },
18 { "<leader>fr", "<cmd>Telescope oldfiles<cr>", desc = "Recent" },
19 { "<leader>fR", LazyVim.pick("oldfiles", { cwd = vim.loop.cwd() }), desc = "Recent (cwd)" },
20 -- git
21 -- { "<leader>gc", "<cmd>Telescope git_commits<CR>", desc = "commits" },
22 { "<leader>gc", false },
23 -- { "<leader>gs", "<cmd>Telescope git_status<CR>", desc = "status" },
24 { "<leader>gs", false },
25 -- search
26 { "<leader>sa", "<cmd>Telescope autocommands<cr>", desc = "Auto Commands" },
27 { "<leader>sb", "<cmd>Telescope current_buffer_fuzzy_find<cr>", desc = "Buffer" },
28 { "<leader>sc", "<cmd>Telescope command_history<cr>", desc = "Command History" },
29 { "<leader>sC", "<cmd>Telescope commands<cr>", desc = "Commands" },
30 { "<leader>sd", "<cmd>Telescope diagnostics bufnr=0<cr>", desc = "Document diagnostics" },
31 { "<leader>sD", "<cmd>Telescope diagnostics<cr>", desc = "Workspace diagnostics" },
32 { "<leader>sg", LazyVim.pick("live_grep"), desc = "Grep (root dir)" },
33 { "<leader>sG", LazyVim.pick("live_grep", { cwd = false }), desc = "Grep (cwd)" },
34 { "<leader>sh", "<cmd>Telescope help_tags<cr>", desc = "Help Pages" },
35 { "<leader>sH", "<cmd>Telescope highlights<cr>", desc = "Search Highlight Groups" },
36 { "<leader>sk", "<cmd>Telescope keymaps<cr>", desc = "Key Maps" },
37 { "<leader>sM", "<cmd>Telescope man_pages<cr>", desc = "Man Pages" },
38 { "<leader>sm", "<cmd>Telescope marks<cr>", desc = "Jump to Mark" },
39 { "<leader>so", "<cmd>Telescope vim_options<cr>", desc = "Options" },
40 { "<leader>sR", "<cmd>Telescope resume<cr>", desc = "Resume" },
41 { "<leader>sw", LazyVim.pick("grep_string"), desc = "Word (root dir)" },
42 { "<leader>sW", LazyVim.pick("grep_string", { cwd = false }), desc = "Word (cwd)" },
43 { "<leader>uC", LazyVim.pick("colorscheme", { enable_preview = true }), desc = "Colorscheme with preview" },
44 -- {
45 -- "<leader>ss",
46 -- LazyVim.pick("lsp_document_symbols", {
47 -- symbols = {
48 -- "Class",
49 -- "Function",
50 -- "Method",
51 -- "Constructor",
52 -- "Interface",
53 -- "Module",
54 -- "Struct",
55 -- "Trait",
56 -- "Field",
57 -- "Property",
58 -- },
59 -- }),
60 -- desc = "Goto Symbol",
61 -- },
62 { "<leader>ss", false }, -- use for snippets below
63 {
64 "<leader>sS",
65 LazyVim.pick("lsp_dynamic_workspace_symbols", {
66 symbols = {
67 "Class",
68 "Function",
69 "Method",
70 "Constructor",
71 "Interface",
72 "Module",
73 "Struct",
74 "Trait",
75 "Field",
76 "Property",
77 },
78 }),
79 desc = "Goto Symbol (Workspace)",
80 },
81 },
82 },
83 {
84 "benfowler/telescope-luasnip.nvim",
85 dependencies = {
86 "telescope.nvim",
87 },
88 config = function()
89 require("telescope").load_extension("luasnip")
90 end,
91 keys = { { "<leader>ss", "<cmd>Telescope luasnip<cr>", desc = "Snippets" } },
92 },
93 {
94 "stevearc/oil.nvim",
95 opts = {
96 keymaps = {
97 ["g?"] = "actions.show_help",
98 ["<CR>"] = "actions.select",
99 ["<C-s>"] = "actions.select_vsplit",
100 ["<C-h>"] = false, -- used to be actions.select_split
101 ["<C-t>"] = "actions.select_tab",
102 ["<C-p>"] = "actions.preview",
103 ["<C-c>"] = "actions.close",
104 ["<C-l>"] = false, -- used to be actions.refresh
105 ["-"] = "actions.parent",
106 ["_"] = "actions.open_cwd",
107 ["`"] = "actions.cd",
108 ["~"] = "actions.tcd",
109 ["gs"] = "actions.change_sort",
110 ["gx"] = "actions.open_external",
111 ["g."] = "actions.toggle_hidden",
112 ["g\\"] = "actions.toggle_trash",
113 },
114 },
115 dependencies = {"nvim-tree/nvim-web-devicons"},
116 },
117 { "folke/trouble.nvim",
118 cmd = { "Trouble" },
119 opts = {
120 modes = {
121 lsp = {
122 win = { position = "right" },
123 },
124 },
125 },
126 keys = {
127 { "<leader>xx", "<cmd>Trouble diagnostics toggle<cr>", desc = "Diagnostics (Trouble)" },
128 { "<leader>xX", "<cmd>Trouble diagnostics toggle filter.buf=0<cr>", desc = "Buffer Diagnostics (Trouble)" },
129 { "<leader>cs", "<cmd>Trouble symbols toggle<cr>", desc = "Symbols (Trouble)" },
130 { "<leader>cS", "<cmd>Trouble lsp toggle<cr>", desc = "LSP references/definitions/... (Trouble)" },
131 { "<leader>xL", "<cmd>Trouble loclist toggle<cr>", desc = "Location List (Trouble)" },
132 { "<leader>xQ", "<cmd>Trouble qflist toggle<cr>", desc = "Quickfix List (Trouble)" },
133 {
134 "[q",
135 function()
136 if require("trouble").is_open() then
137 require("trouble").prev({ skip_groups = true, jump = true })
138 else
139 local ok, err = pcall(vim.cmd.cprev)
140 if not ok then
141 vim.notify(err, vim.log.levels.ERROR)
142 end
143 end
144 end,
145 desc = "Previous Trouble/Quickfix Item",
146 },
147 {
148 "]q",
149 function()
150 if require("trouble").is_open() then
151 require("trouble").next({ skip_groups = true, jump = true })
152 else
153 local ok, err = pcall(vim.cmd.cnext)
154 if not ok then
155 vim.notify(err, vim.log.levels.ERROR)
156 end
157 end
158 end,
159 desc = "Next Trouble/Quickfix Item",
160 },
161 },
162 },
163 { "folke/todo-comments.nvim",
164 cmd = { "TodoTrouble", "TodoTelescope" },
165 event = "LazyFile",
166 -- stylua: ignore
167 keys = {
168 { "]t", function() require("todo-comments").jump_next() end, desc = "Next Todo Comment" },
169 { "[t", function() require("todo-comments").jump_prev() end, desc = "Previous Todo Comment" },
170 { "<leader>xt", "<cmd>Trouble todo toggle<cr>", desc = "Todo (Trouble)" },
171 { "<leader>xT", "<cmd>Trouble todo toggle filter = {tag = {TODO,FIX,FIXME}}<cr>", desc = "Todo/Fix/Fixme (Trouble)" },
172 { "<leader>st", "<cmd>TodoTelescope<cr>", desc = "Todo" },
173 { "<leader>sT", "<cmd>TodoTelescope keywords=TODO,FIX,FIXME<cr>", desc = "Todo/Fix/Fixme" },
174 },
175 },
176 {
177 "neo-tree.nvim",
178 enabled = false,
179 lazy = false,
180 opts = {
181 filesystem = {
182 -- TODO: review these
183 bind_to_cwd = false,
184 follow_current_file = {
185 enabled = false,
186 },
187 },
188 },
189 keys = function()
190 local NeoTree = function(args)
191 return function()
192 require("neo-tree.command").execute(args)
193 end
194 end
195 return {
196 { "<leader>fe", NeoTree({ toggle = true, dir = vim.loop.cwd() }) },
197 }
198 end,
199 },
200 }