updates
This commit is contained in:
parent
4f88084419
commit
611be5f360
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,3 +2,5 @@ plugin
|
|||||||
spell
|
spell
|
||||||
.git
|
.git
|
||||||
*.old
|
*.old
|
||||||
|
.repro
|
||||||
|
test
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
{
|
{
|
||||||
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
|
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
|
||||||
"any-jump.vim": { "branch": "master", "commit": "f95674d9a4251ac02f452d5f1861e4422f4652c7" },
|
"any-jump.vim": { "branch": "master", "commit": "f95674d9a4251ac02f452d5f1861e4422f4652c7" },
|
||||||
"auto-format.nvim": { "branch": "main", "commit": "1e3c069753d4b0960b351292c1a01af1b122907c" },
|
|
||||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||||
"catppuccin": { "branch": "main", "commit": "0b2437bcc12b4021614dc41fcea9d0f136d94063" },
|
"catppuccin": { "branch": "main", "commit": "d72341852556e2dfe19f779cc682c16dd58548fc" },
|
||||||
"cmp-async-path": { "branch": "main", "commit": "d6d1ffa2075039632a2d71e8fa139818e15ac757" },
|
"cmp-async-path": { "branch": "main", "commit": "d6d1ffa2075039632a2d71e8fa139818e15ac757" },
|
||||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||||
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
|
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
|
||||||
"cmp-nvim-lsp-document-symbol": { "branch": "main", "commit": "f94f7ba948e32cd302caba1c2ca3f7c697fb4fcf" },
|
"cmp-nvim-lsp-document-symbol": { "branch": "main", "commit": "f94f7ba948e32cd302caba1c2ca3f7c697fb4fcf" },
|
||||||
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" },
|
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" },
|
||||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||||
"codecompanion.nvim": { "branch": "main", "commit": "1d6a26b1bb9e3b194d602c1ca7b9582e9f4b0b21" },
|
"codecompanion.nvim": { "branch": "main", "commit": "8fcb2f599d808fd039ecb1219813b9f7be6fc71c" },
|
||||||
"copilot-cmp": { "branch": "master", "commit": "15fc12af3d0109fa76b60b5cffa1373697e261d1" },
|
"copilot-cmp": { "branch": "master", "commit": "15fc12af3d0109fa76b60b5cffa1373697e261d1" },
|
||||||
"copilot-lualine": { "branch": "main", "commit": "dc4b8ed0f75bc2557b3158c526624bf04ad233ea" },
|
"copilot-lualine": { "branch": "main", "commit": "dc4b8ed0f75bc2557b3158c526624bf04ad233ea" },
|
||||||
"copilot.lua": { "branch": "master", "commit": "30321e33b03cb924fdcd6a806a0dc6fa0b0eafb9" },
|
"copilot.lua": { "branch": "master", "commit": "30321e33b03cb924fdcd6a806a0dc6fa0b0eafb9" },
|
||||||
"dashboard-nvim": { "branch": "master", "commit": "000448d837f6e7a47f8f342f29526c4d7e49e9ce" },
|
"dashboard-nvim": { "branch": "master", "commit": "000448d837f6e7a47f8f342f29526c4d7e49e9ce" },
|
||||||
|
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||||
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
|
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
|
||||||
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
|
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
|
||||||
"gitsigns.nvim": { "branch": "main", "commit": "8b00147519d6f8353867d5d0b55f587306b0cfb6" },
|
"gitsigns.nvim": { "branch": "main", "commit": "6668f379ca634c36b8e11453118590b91bf8b295" },
|
||||||
"goto-preview": { "branch": "main", "commit": "4751e70a6ebce4fb78327b097cb8fdff55f38f3a" },
|
"goto-preview": { "branch": "main", "commit": "4751e70a6ebce4fb78327b097cb8fdff55f38f3a" },
|
||||||
"image.nvim": { "branch": "master", "commit": "6ffafab2e98b5bda46bf227055aa84b90add8cdc" },
|
"image.nvim": { "branch": "master", "commit": "6ffafab2e98b5bda46bf227055aa84b90add8cdc" },
|
||||||
"indent-blankline.nvim": { "branch": "master", "commit": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78" },
|
"indent-blankline.nvim": { "branch": "master", "commit": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78" },
|
||||||
@ -27,25 +27,27 @@
|
|||||||
"lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
|
"lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
|
||||||
"lualine.nvim": { "branch": "master", "commit": "f4f791f67e70d378a754d02da068231d2352e5bc" },
|
"lualine.nvim": { "branch": "master", "commit": "f4f791f67e70d378a754d02da068231d2352e5bc" },
|
||||||
"mini.diff": { "branch": "main", "commit": "bc3a7be30fd45ed4961ea90de1d9d04637cdeae6" },
|
"mini.diff": { "branch": "main", "commit": "bc3a7be30fd45ed4961ea90de1d9d04637cdeae6" },
|
||||||
"mini.nvim": { "branch": "main", "commit": "4dd209e4f03bacd46d6d87408b2529a8823112fb" },
|
"mini.nvim": { "branch": "main", "commit": "a84b7e555fe382c1859e6ca46b4983c822a1f77f" },
|
||||||
"none-ls.nvim": { "branch": "main", "commit": "02f5275d8a5546092f01306f162c00c71d6e0281" },
|
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
|
||||||
|
"none-ls.nvim": { "branch": "main", "commit": "f41624ea1a73f020ddbd33438f74abb95ea17d55" },
|
||||||
|
"nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" },
|
||||||
"nvim-autopairs": { "branch": "master", "commit": "68f0e5c3dab23261a945272032ee6700af86227a" },
|
"nvim-autopairs": { "branch": "master", "commit": "68f0e5c3dab23261a945272032ee6700af86227a" },
|
||||||
"nvim-cmp": { "branch": "main", "commit": "12509903a5723a876abd65953109f926f4634c30" },
|
"nvim-cmp": { "branch": "main", "commit": "12509903a5723a876abd65953109f926f4634c30" },
|
||||||
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
|
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
|
||||||
"nvim-html-css": { "branch": "main", "commit": "fa7e2da75edfd3d110fc8d4f8e5215b5de56ff42" },
|
"nvim-html-css": { "branch": "main", "commit": "fa7e2da75edfd3d110fc8d4f8e5215b5de56ff42" },
|
||||||
"nvim-lint": { "branch": "master", "commit": "6e9dd545a1af204c4022a8fcd99727ea41ffdcc8" },
|
"nvim-lint": { "branch": "master", "commit": "6e9dd545a1af204c4022a8fcd99727ea41ffdcc8" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "7af2c37192deae28d1305ae9e68544f7fb5408e1" },
|
"nvim-lspconfig": { "branch": "master", "commit": "1110787f1b464888c59a044c48c5119d14078044" },
|
||||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||||
"nvim-notify": { "branch": "master", "commit": "22f29093eae7785773ee9d543f8750348b1a195c" },
|
"nvim-notify": { "branch": "master", "commit": "22f29093eae7785773ee9d543f8750348b1a195c" },
|
||||||
"nvim-tree.lua": { "branch": "master", "commit": "d529a99f88e0dff02e0aa275db2f595cd252a2c8" },
|
"nvim-tree.lua": { "branch": "master", "commit": "d529a99f88e0dff02e0aa275db2f595cd252a2c8" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "2cade9e3d105732b794bc37e7cb2dc53b1cf99dc" },
|
"nvim-treesitter": { "branch": "master", "commit": "1a6e42bb8c5c23d8e2c0acb842dcacac5ee06761" },
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "1020869742ecb191f260818234517f4a1515cfe8" },
|
"nvim-web-devicons": { "branch": "master", "commit": "1020869742ecb191f260818234517f4a1515cfe8" },
|
||||||
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
|
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
|
||||||
|
"odis": { "branch": "master", "commit": "5176a07a729860d0c0cdefe96252fc7ff9e16d43" },
|
||||||
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||||
"presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" },
|
"presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" },
|
||||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "011d98eaa3a73b5a51d82ce5bc6b1397dde95562" },
|
"rainbow-delimiters.nvim": { "branch": "master", "commit": "011d98eaa3a73b5a51d82ce5bc6b1397dde95562" },
|
||||||
"render-markdown.nvim": { "branch": "main", "commit": "e05a9f22f31c088ece3fa5928daf546a015b66ee" },
|
"render-markdown.nvim": { "branch": "main", "commit": "4a28c135bc3548e398ba38178fec3f705cb26fe6" },
|
||||||
"telescope-cmdline.nvim": { "branch": "main", "commit": "8b05928ac1b9f2b772cedde891faa6669b0ec59a" },
|
|
||||||
"telescope-color-names.nvim": { "branch": "main", "commit": "95b372b9a8ba0fc7cf6a67be637ee37453f322da" },
|
"telescope-color-names.nvim": { "branch": "main", "commit": "95b372b9a8ba0fc7cf6a67be637ee37453f322da" },
|
||||||
"telescope-file-browser.nvim": { "branch": "master", "commit": "626998e5c1b71c130d8bc6cf7abb6709b98287bb" },
|
"telescope-file-browser.nvim": { "branch": "master", "commit": "626998e5c1b71c130d8bc6cf7abb6709b98287bb" },
|
||||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "2a5ceff981501cff8f46871d5402cd3378a8ab6a" },
|
"telescope-fzf-native.nvim": { "branch": "main", "commit": "2a5ceff981501cff8f46871d5402cd3378a8ab6a" },
|
||||||
|
@ -1,77 +1,461 @@
|
|||||||
local map = vim.keymap.set
|
local map = vim.keymap.set
|
||||||
local Terminal = require("toggleterm.terminal").Terminal
|
local term = require("utils.terminal")
|
||||||
local notify = require("notify")
|
local map_from_table = require("utils.keymaps.converters.from_table").set_keybindings
|
||||||
local dsplit = require("util.open-docs-in-split")
|
local add_to_whichkey = require("utils.keymaps.converters.whichkey").addToWhichKey
|
||||||
|
local term_factory = term.term_factory
|
||||||
local function term_factory(cfg)
|
local term_toggle = term.term_toggle
|
||||||
cfg["on_stderr"] = function(_, job, data, name)
|
|
||||||
notify(name .. " encountered an error on job: " .. job .. "\nData: " .. data, "error")
|
|
||||||
end
|
|
||||||
cfg["on_stdout"] = function(_, job, data, name)
|
|
||||||
notify(name .. " output for job" .. job .. "\nData: " .. data, "info")
|
|
||||||
end
|
|
||||||
return Terminal:new(cfg)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function term_toggle(term)
|
|
||||||
term:toggle()
|
|
||||||
end
|
|
||||||
|
|
||||||
local opts = { silent = true, noremap = true }
|
local opts = { silent = true, noremap = true }
|
||||||
local notsilent = { silent = false, noremap = true }
|
|
||||||
|
|
||||||
local function ReloadConfig()
|
|
||||||
dofile(vim.fn.stdpath("config") .. "/init.lua")
|
|
||||||
dofile(vim.fn.stdpath("config") .. "/lua/core/keymaps.lua")
|
|
||||||
dofile(vim.fn.stdpath("config") .. "/lua/core/autocmds.lua")
|
|
||||||
dofile(vim.fn.stdpath("config") .. "/lua/core/options.lua")
|
|
||||||
dofile(vim.fn.stdpath("config") .. "/lua/core/plugins.lua")
|
|
||||||
dofile(vim.fn.stdpath("config") .. "/lua/plugins/ui/init.lua")
|
|
||||||
dofile(vim.fn.stdpath("config") .. "/lua/plugins/ui/toggleterm.lua")
|
|
||||||
dofile(vim.fn.stdpath("config") .. "/lua/plugins/ai/init.lua")
|
|
||||||
dofile(vim.fn.stdpath("config") .. "/lua/plugins/lsp/init.lua")
|
|
||||||
dofile(vim.fn.stdpath("config") .. "/lua/plugins/colorscheme/init.lua")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Leader key
|
-- Leader key
|
||||||
vim.g.mapleader = " "
|
vim.g.mapleader = " "
|
||||||
vim.g.maplocalleader = ","
|
vim.g.maplocalleader = ","
|
||||||
|
|
||||||
-- Custom commands
|
-- Custom commands
|
||||||
vim.api.nvim_create_user_command("PS", ":PackerSync", {})
|
|
||||||
vim.api.nvim_create_user_command("Reload", ReloadConfig, {})
|
|
||||||
vim.api.nvim_create_user_command("Config", "edit ~/.config/nvim", {})
|
vim.api.nvim_create_user_command("Config", "edit ~/.config/nvim", {})
|
||||||
vim.api.nvim_create_user_command("Plugins", "edit ~/.config/nvim/lua/core/plugins.lua", {})
|
|
||||||
vim.api.nvim_create_user_command("Keymaps", "edit ~/.config/nvim/lua/core/keymaps.lua", {})
|
vim.api.nvim_create_user_command("Keymaps", "edit ~/.config/nvim/lua/core/keymaps.lua", {})
|
||||||
|
|
||||||
-- {{{ Basic mappings
|
-- {{{ Basic Mappings
|
||||||
map("n", "<C-u>", "<C-u>zz", opts)
|
local basic_mappings = {
|
||||||
map("n", "n", "nzzzv", opts)
|
{ key = "<C-u>", cmd = "<C-u>zz", desc = "Scroll up and center", mode = "n" },
|
||||||
map("n", "N", "Nzzzv", opts)
|
{ key = "n", cmd = "nzzzv", desc = "Next search result and center", mode = "n" },
|
||||||
map("x", "<leader>p", '"_dP', opts) -- paste without yanking
|
{ key = "N", cmd = "Nzzzv", desc = "Previous search result and center", mode = "n" },
|
||||||
map("v", "<", "<gv", opts) -- reselect after indent
|
{ key = "<leader>p", cmd = '"_dP', desc = "Paste without yanking", mode = "x", group = "Paste in place" },
|
||||||
map("v", ">", ">gv", opts)
|
{ key = "<", cmd = "<gv", desc = "Reselect after indent", mode = "v" },
|
||||||
map("v", "J", ":m '>+1<CR>gv=gv", opts) -- move lines
|
{ key = ">", cmd = ">gv", desc = "Reselect after indent", mode = "v" },
|
||||||
map("v", "K", ":m '<-2<CR>gv=gv", opts)
|
{ key = "J", cmd = ":m '>+1<CR>gv=gv", desc = "Move line down", mode = "v" },
|
||||||
|
{ key = "K", cmd = ":m '<-2<CR>gv=gv", desc = "Move line up", mode = "v" },
|
||||||
|
}
|
||||||
|
--}}}
|
||||||
|
|
||||||
|
--{{{ Buffer Navigation Mappings
|
||||||
|
local buffer_navigation_mappings = {
|
||||||
|
{ key = "<C-J>", cmd = ":bnext<CR>", desc = "Next buffer", mode = "n" },
|
||||||
|
{ key = "<C-K>", cmd = ":bprev<CR>", desc = "Previous buffer", mode = "n" },
|
||||||
|
{ key = "<leader>bb", cmd = ":Telescope buffers<CR>", desc = "List buffers", mode = "n", group = "Buffers" },
|
||||||
|
{ key = "<leader>bk", cmd = ":bdelete<CR>", desc = "Delete buffer", mode = "n", group = "Buffers" },
|
||||||
|
{ key = "<leader>bn", cmd = ":bnext<CR>", desc = "Next buffer", mode = "n", group = "Buffers" },
|
||||||
|
{ key = "<leader>bp", cmd = ":bprev<CR>", desc = "Previous buffer", mode = "n", group = "Buffers" },
|
||||||
|
}
|
||||||
|
--}}}
|
||||||
|
|
||||||
|
--{{{ Terminal Mappings
|
||||||
|
local terminal_mappings = {
|
||||||
|
{
|
||||||
|
key = "op",
|
||||||
|
cmd = "<C-\\><C-N>:ToggleTerm name=ipython",
|
||||||
|
desc = "Open IPython",
|
||||||
|
mode = "v",
|
||||||
|
group = "Open",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "oP",
|
||||||
|
cmd = "<C-\\><C-N>:ToggleTerm name=ipython-full",
|
||||||
|
desc = "Open full IPython",
|
||||||
|
mode = "v",
|
||||||
|
group = "Open",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<C-T>",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||||
|
desc = "Toggle terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>tt",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||||
|
desc = "Toggle terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Toggle",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>tT",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm-full direction=tab<CR>",
|
||||||
|
desc = "Toggle full terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Toggle",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>ot",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||||
|
desc = "Open terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Open",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>oT",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm-full direction=tab<CR>",
|
||||||
|
desc = "Open full terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Open",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>ts",
|
||||||
|
cmd = ":TermSelect<CR>",
|
||||||
|
desc = "Select terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Terminal",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>tv",
|
||||||
|
cmd = ":ToggleTerm direction=vertical name=toggleterm-vert<CR>",
|
||||||
|
desc = "Toggle vertical terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Terminal",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>th",
|
||||||
|
cmd = ":ToggleTerm direction=horizontal name=toggleterm-hori<CR>",
|
||||||
|
desc = "Toggle horizontal terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Terminal",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>ov",
|
||||||
|
cmd = ":ToggleTerm direction=vertical name=toggleterm-vert<CR>",
|
||||||
|
desc = "Open vertical terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Open",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>oh",
|
||||||
|
cmd = ":ToggleTerm direction=horizontal name=toggleterm-hori<CR>",
|
||||||
|
desc = "Open horizontal terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Open",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>tf",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||||
|
desc = "Toggle terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Terminal",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>-",
|
||||||
|
cmd = ":ToggleTerm direction='horizontal'<CR>",
|
||||||
|
desc = "Toggle horizontal terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Horizontal Terminal",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>|",
|
||||||
|
cmd = ":ToggleTerm direction='vertical'<CR>",
|
||||||
|
desc = "Toggle vertical terminal",
|
||||||
|
mode = "n",
|
||||||
|
group = "Vertical Terminal",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
--}}}
|
||||||
|
|
||||||
|
-- {{{ LSP Mappings
|
||||||
|
local lsp_mappings = {
|
||||||
|
{ mode = "n", key = "gA", cmd = vim.lsp.buf.code_action, group = "Code Action" },
|
||||||
|
{ mode = "n", key = "gd", cmd = ":Telescope lsp_definitions<CR>", group = "LSP Definitions" },
|
||||||
|
{ mode = "n", key = "gDc", cmd = ":Telescope lsp_implementations<CR>", group = "LSP Implementations" },
|
||||||
|
{ mode = "n", key = "gDf", cmd = ":Telescope lsp_definitions<CR>", group = "LSP Definitions" },
|
||||||
|
{ mode = "n", key = "gF", cmd = ":edit <cfile><CR>", group = "Edit File" },
|
||||||
|
{ mode = "n", key = "gT", cmd = ":Telescope lsp_type_definitions<CR>", group = "LSP Type Definitions" },
|
||||||
|
{ mode = "n", key = "gb", cmd = ":Gitsigns blame_line<CR>", group = "Git Blame" },
|
||||||
|
{ mode = "n", key = "gi", cmd = ":Telescope lsp_implementations<CR>", group = "Telescope Implementations" },
|
||||||
|
{ mode = "n", key = "gj", cmd = ":Telescope jumplist<CR>", group = "Telescope Jumplist" },
|
||||||
|
{ mode = "n", key = "gr", cmd = ":Telescope lsp_references<CR>", goup = "LSP References" },
|
||||||
|
{ mode = "n", key = "gs", cmd = vim.lsp.buf.signature_help },
|
||||||
|
-- { mode = "n", key = "K", cmd = vim.lsp.buf.hover },
|
||||||
|
{ mode = "n", key = "<leader>ca", cmd = vim.lsp.buf.code_action, group = "Code" },
|
||||||
|
{ mode = "n", key = "<leader>ch", cmd = ":lua vim.lsp.buf.signature_help()<CR>", group = "Signature Help" },
|
||||||
|
{ mode = "n", key = "<leader>cR", cmd = ":lua vim.lsp.buf.rename()<CR>", group = "Rename" },
|
||||||
|
{ mode = "n", key = "<leader>cr", cmd = ":Telescope lsp_references<CR>", group = "LSP References" },
|
||||||
|
{ mode = "n", key = "<leader>cs", cmd = ":Telescope lsp_document_symbols<CR>", group = "LsP Document Symbols" },
|
||||||
|
{ mode = "n", key = "<leader>ct", cmd = ":Telescope lsp_type_definitions<CR>", group = "LSP Definitions" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>cw",
|
||||||
|
cmd = ":Telescope lsp_dynamic_workspace_symbols<CR>",
|
||||||
|
group = "LSP Workspace Symbols",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>ci", cmd = ":Telescope lsp_implementations<CR>", group = "LSP Implementations" },
|
||||||
|
{ mode = "n", key = "<leader>cci", cmd = ":Telescope lsp_incoming_calls<CR>", group = "LSP Incoming Calls" },
|
||||||
|
{ mode = "n", key = "<leader>cco", cmd = ":Telescope lsp_outgoing_calls<CR>", group = "LSP Outgoing Calls" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>cd",
|
||||||
|
cmd = ":Telescope diagnostics theme=dropdown layout_config={width=0.8}<CR>",
|
||||||
|
group = "Telecope Diagnostics",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>cDs",
|
||||||
|
cmd = ":Telescope diagnostics theme=dropdown layout_config={width=0.8}<CR>",
|
||||||
|
group = "Telecope Diagnostics",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>cDn", cmd = ":lua vim.diagnostic.goto_next()<CR>", group = "Goto Next Preview" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>cDp",
|
||||||
|
cmd = ":lua vim.diagnostic.goto_prev()<CR<CR>",
|
||||||
|
group = "Goto Previous Preview",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>cl", cmd = ":lua vim.diagnostic.setloclist()<CR>", group = "Set Loclist" },
|
||||||
|
}
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- {{{ Buffer navigation
|
-- {{{ Code Companion Mappings
|
||||||
map("n", "<C-J>", ":bnext<CR>", opts)
|
local code_companion_mappings = {
|
||||||
map("n", "<C-K>", ":bprev<CR>", opts)
|
{ mode = "n", key = "<leader>cp", cmd = ":vert Copilot panel<CR>", group = "Code" },
|
||||||
map("n", "<leader>bb", ":Telescope buffers<CR>", opts)
|
{ mode = "n", key = "<leader>oc", cmd = ":CodeCompanionChat Toggle<CR>", group = "Open" },
|
||||||
map("n", "<leader>bk", ":bdelete<CR>", opts)
|
{ mode = "n", key = "<leader>Cc", cmd = ":CodeCompanionChat Toggle<CR>", group = "CodeCompanion" },
|
||||||
map("n", "<leader>bn", ":bnext<CR>", opts)
|
{ mode = "n", key = "<leader>Ci", cmd = ":CodeCompanion ", group = "CodeCompanion" },
|
||||||
map("n", "<leader>bp", ":bprev<CR>", opts)
|
{ mode = "n", key = "<leader>CT", cmd = ":CodeCompanionChat Toggle<CR>", group = "CodeCompanion" },
|
||||||
|
{ mode = "n", key = "<leader>Ca", cmd = ":CodeCompanionActions<CR>", group = "CodeCompanion" },
|
||||||
|
{ mode = "v", key = "<leader>Cc", cmd = ":CodeCompanionChat Add<CR>", group = "CodeCompanion" },
|
||||||
|
{ mode = "v", key = "<leader>Ci", cmd = ":CodeCompanion /buffer ", group = "CodeCompanion" },
|
||||||
|
{ mode = "v", key = "<leader>Ce", cmd = ":CodeCompanion /explain<CR>", group = "CodeCompanion" },
|
||||||
|
{ mode = "v", key = "<leader>Cf", cmd = ":CodeCompanion /fix<CR>", group = "CodeCompanion" },
|
||||||
|
{ mode = "v", key = "<leader>Cl", cmd = ":CodeCompanion /lsp<CR>", group = "CodeCompanion" },
|
||||||
|
{ mode = "v", key = "<leader>Ct", cmd = ":CodeCompanion /tests<CR>", group = "CodeCompanion" },
|
||||||
|
}
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
--{{{ Terminal mappings
|
--{{{ Telescope mappings
|
||||||
|
local telescope_mappings = {
|
||||||
|
{ mode = "n", key = "//", cmd = ":Telescope current_buffer_fuzzy_find previewer=false<CR>" },
|
||||||
|
{ mode = "n", key = "??", cmd = ":Telescope lsp_document_symbols theme=dropdown layout_config={width=0.5}<CR>" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>fc",
|
||||||
|
cmd = ':Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||||
|
group = "Find",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>Tc",
|
||||||
|
cmd = ":Telescope colorscheme<CR>",
|
||||||
|
group = "Telescope",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>TC",
|
||||||
|
cmd = ':Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||||
|
group = "Telescope",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>Tn",
|
||||||
|
cmd = ":Telescope notify theme=dropdown layout_config={width=0.75}<CR>",
|
||||||
|
group = "Telescope",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>TN",
|
||||||
|
cmd = ":Telescope noice theme=dropdown layout_config={width=0.75}<CR>",
|
||||||
|
group = "Telescope",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>ff",
|
||||||
|
cmd = ":Telescope find_files find_command=rg,--ignore,--follow,--hidden,--files prompt_prefix=🔍<CR>",
|
||||||
|
group = "Find",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>fg", cmd = ":Telescope live_grep<CR>", group = "Find" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>Tg",
|
||||||
|
cmd = ':Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||||
|
group = "Telecope",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>fG",
|
||||||
|
cmd = ':Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||||
|
group = "Find",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>fb", cmd = ":Telescope file_browser<CR>", group = "Find" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>fr",
|
||||||
|
cmd = ":Telescope oldfiles theme=dropdown layout_config={width=0.5}<CR>",
|
||||||
|
group = "Find",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>hc",
|
||||||
|
cmd = ":Telescope commands<CR>",
|
||||||
|
group = "Help",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>hv",
|
||||||
|
cmd = ":Telescope vim_options<CR>",
|
||||||
|
group = "Help",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>hk",
|
||||||
|
cmd = ":Telescope keymaps<CR>",
|
||||||
|
group = "Help",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>hs",
|
||||||
|
cmd = ":Telescope spell_suggest<CR>",
|
||||||
|
group = "Help",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>ht",
|
||||||
|
cmd = ":Telescope help_tags<CR>",
|
||||||
|
group = "Help",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>hm",
|
||||||
|
cmd = ":Telescope man_pages theme=dropdown layout_config={width=0.75}<CR>",
|
||||||
|
group = "Help",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>sf",
|
||||||
|
cmd = ":Telescope find_files find_command=rg,--ignore,--follow,--hidden,--files prompt_prefix=🔍<CR>",
|
||||||
|
group = "Search",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>sF", cmd = ":Telescope fidget<CR>", group = "Search" },
|
||||||
|
{ mode = "n", key = "<leader>sg", cmd = ":Telescope live_grep<CR>", group = "Search" },
|
||||||
|
{ mode = "n", key = "<leader>sh", cmd = ":Telescope command_history<CR>", group = "Search" },
|
||||||
|
{ mode = "n", key = "<leader>sm", cmd = ":Telescope man_pages<CR>", group = "Search" },
|
||||||
|
{ mode = "n", key = "<leader>s/", cmd = ":Telescope search_history<CR>", group = "Search" },
|
||||||
|
{ mode = "n", key = "<leader>gc", cmd = ":Telescope git_commits<CR>", group = "Git" },
|
||||||
|
{ mode = "n", key = "<leader>gf", cmd = ":Telescope git_files<CR>", group = "Git" },
|
||||||
|
{ mode = "n", key = "<leader>Tr", cmd = ":Telescope reloader<CR>", group = "Telescope" },
|
||||||
|
}
|
||||||
|
--}}}
|
||||||
|
|
||||||
|
-- {{{ File Explorer Mappings (i guess)
|
||||||
|
local file_explorer_mappings = {
|
||||||
|
{ mode = "n", key = "<leader>nt", cmd = ":NvimTreeToggle<CR>" },
|
||||||
|
{ mode = "n", key = "<leader>nc", cmd = ":lua vim.notify.dismiss()<CR>" },
|
||||||
|
{ mode = "n", key = "<leader>D", cmd = ":Dotenv .env<CR>", group = "Dotenv" },
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Misc Utilities Mappings
|
||||||
|
local misc_utilities_mappings = {
|
||||||
|
{ mode = "n", key = "<leader>x", cmd = "<cmd>!chmod +x %<CR>", group = "Make Executable" },
|
||||||
|
{ mode = "n", key = "<leader>y", cmd = '"+', group = "System Yank" },
|
||||||
|
{ mode = "v", key = "<leader>y", cmd = '"+', group = "System Yank" },
|
||||||
|
{ mode = "n", key = "<leader>sc", cmd = ":nohls<CR>", group = "Search" },
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Goto Preview Mappings
|
||||||
|
local goto_preview_mappings = {
|
||||||
|
{ mode = "n", key = "gpc", cmd = ':lua require("goto-preview").close_all_win()<CR>', group = "Goto Preview" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "gpd",
|
||||||
|
cmd = ':lua require("goto-preview").goto_preview_definition()<CR>',
|
||||||
|
group = "Goto Preview",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "gpi",
|
||||||
|
cmd = ':lua require("goto-preview").goto_preview_implementation()<CR>',
|
||||||
|
group = "Goto Preview",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Workspace Management Mappings
|
||||||
|
local workspace_management_mappings = {
|
||||||
|
{ mode = "n", key = "<leader>wa", cmd = vim.lsp.buf.add_workspace_folder },
|
||||||
|
{ mode = "n", key = "<leader>wr", cmd = vim.lsp.buf.remove_workspace_folder },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>wl",
|
||||||
|
cmd = function()
|
||||||
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Noice Mappings
|
||||||
|
local noice_mappings = {
|
||||||
|
{ mode = "n", key = "<leader>Nh", cmd = ":Noice telescope<CR>", group = "Noice" },
|
||||||
|
{ mode = "n", key = "<leader>Nl", cmd = ":Noice last<CR>", group = "Noice" },
|
||||||
|
{ mode = "n", key = "<leader>Nd", cmd = ":Noice dismiss<CR>", group = "Noice" },
|
||||||
|
{ mode = "n", key = "<leader>Ne", cmd = ":Noice errors<CR>", group = "Noice" },
|
||||||
|
{ mode = "n", key = "<leader>Ns", cmd = ":Noice stats<CR>", group = "Noice" },
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ ODIS Mappings
|
||||||
|
local odis_mappings = {
|
||||||
|
{ mode = "n", key = "<leader>dv", cmd = ':lua require("odis").show_documentation("vsplit")<CR>', group = "ODIS" },
|
||||||
|
{ mode = "n", key = "<leader>dh", cmd = ':lua require("odis").show_documentation("vsplit")<CR>', group = "ODIS" },
|
||||||
|
{ mode = "n", key = "<leader>db", cmd = ':lua require("odis").show_documentation("vsplit")<CR>', group = "ODIS" },
|
||||||
|
{ mode = "n", key = "<leader>dt", cmd = ':lua require("odis").show_documentation("vsplit")<CR>', group = "ODIS" },
|
||||||
|
{ mode = "n", key = "<leader>dt", cmd = ':lua require("odis").show_documentation("vsplit")<CR>', group = "ODIS" },
|
||||||
|
-- { mode = "n", key = "<leader>dc", cmd = 'require("odis").close_float()' },
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Diffview Mappings
|
||||||
|
local diffview_mappings = {
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdo",
|
||||||
|
cmd = ":DiffviewOpen<CR>",
|
||||||
|
group = "Git",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdf",
|
||||||
|
cmd = ":DiffviewFileHistory %<CR>",
|
||||||
|
group = "Git",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdh",
|
||||||
|
cmd = ":DiffviewHistory<CR>",
|
||||||
|
group = "Git",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdc",
|
||||||
|
cmd = ":DiffviewClose<CR>",
|
||||||
|
group = "Git",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdt",
|
||||||
|
cmd = ":DiffviewToggleFiles<CR>",
|
||||||
|
group = "Git",
|
||||||
|
desc = "Toggle files view",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdr",
|
||||||
|
cmd = ":DiffviewRefresh<CR>",
|
||||||
|
desc = "Refresh diffview",
|
||||||
|
group = "Git",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
--{{{ Custom Terminals
|
||||||
local programs_map = {
|
local programs_map = {
|
||||||
gg = { cmd = "lazygit", display_name = "lazygit", direction = "tab", hidden = true },
|
gg = { cmd = "lazygit", display_name = "lazygit", direction = "tab", hidden = true, group = "Git" },
|
||||||
op = { cmd = "ipython", display_name = "ipython", direction = "vertical", hidden = true },
|
op = { cmd = "ipython", display_name = "ipython", direction = "vertical", hidden = true, group = "Open" },
|
||||||
oP = { cmd = "ipython", display_name = "ipython-full", direction = "tab", hidden = true },
|
oP = { cmd = "ipython", display_name = "ipython-full", direction = "tab", hidden = true, group = "Open" },
|
||||||
on = { cmd = "ncmpcpp", display_name = "ncmpcpp", direction = "tab", hidden = true },
|
on = { cmd = "ncmpcpp", display_name = "ncmpcpp", direction = "tab", hidden = true, group = "Open" },
|
||||||
ob = { cmd = "btop", display_name = "btop", direction = "tab", hidden = true },
|
ob = { cmd = "btop", display_name = "btop", direction = "tab", hidden = true, group = "Open" },
|
||||||
od = { cmd = "lazydocker", display_name = "lazydocker", direction = "tab", hidden = true },
|
od = { cmd = "lazydocker", display_name = "lazydocker", direction = "tab", hidden = true },
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,180 +465,76 @@ for key, value in pairs(programs_map) do
|
|||||||
end, opts)
|
end, opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
map("v", "op", "<C-\\><C-N>:ToggleTerm name=ipython")
|
local tbl = {}
|
||||||
map("v", "oP", "<C-\\><C-N>:ToggleTerm name=ipython-full")
|
for key, value in pairs(programs_map) do
|
||||||
|
local temp = {}
|
||||||
map("n", "<C-T>", ":ToggleTerm name=toggleterm<CR>", opts)
|
if key == "gg" then
|
||||||
map("n", "<leader>tt", ":ToggleTerm name=toggleterm<CR>", opts)
|
temp = {
|
||||||
map("n", "<leader>tT", ":ToggleTerm name=toggleterm-full direction=tab<CR>", opts)
|
cmd = value.cmd,
|
||||||
map("n", "<leader>ot", ":ToggleTerm name=toggleterm<CR>", opts)
|
key = "<leader>" .. key,
|
||||||
map("n", "<leader>oT", ":ToggleTerm name=toggleterm-full direction=tab<CR>", opts)
|
group = value.group,
|
||||||
map("n", "<leader>ts", ":TermSelect<CR>", opts)
|
mode = "n",
|
||||||
map("n", "<leader>tv", ":ToggleTerm direction=vertical name=toggleterm-vert<CR>", opts)
|
desc = "Open " .. value.display_name,
|
||||||
map("n", "<leader>th", ":ToggleTerm direction=horizontal name=toggleterm-hori<CR>", opts)
|
}
|
||||||
map("n", "<leader>ov", ":ToggleTerm direction=vertical name=toggleterm-vert<CR>", opts)
|
else
|
||||||
map("n", "<leader>oh", ":ToggleTerm direction=horizontal name=toggleterm-hori<CR>", opts)
|
temp = {
|
||||||
map("n", "<leader>tf", ":ToggleTerm name=toggleterm<CR>", opts)
|
cmd = value.cmd,
|
||||||
map("n", "<leader>-", ":ToggleTerm direction='horizontal'<CR>", opts)
|
key = "<leader>" .. key,
|
||||||
map("n", "<leader>|", ":ToggleTerm direction='vertical'<CR>", opts)
|
group = value.group,
|
||||||
|
mode = "n",
|
||||||
|
desc = "Open " .. value.display_name,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
table.insert(tbl, temp)
|
||||||
|
end
|
||||||
|
add_to_whichkey(tbl, { key = "<leader>o", group = "Open" })
|
||||||
|
|
||||||
function _G.set_terminal_keymaps()
|
function _G.set_terminal_keymaps()
|
||||||
local opts = { buffer = 0 }
|
local opts = { buffer = 0 }
|
||||||
map("t", "<esc>", [[<C-\><C-n>]], opts)
|
map("t", "<esc>", [[<C-\><C-n>]], opts)
|
||||||
map("t", "<C-w>", [[<C-\><C-n><C-w>]], opts)
|
map("t", "<C-w>", [[<C-\><C-n><C-w>]], opts)
|
||||||
-- map("t", "<space>", "<space>", { buffer = 0, silent = true }) -- fix space in terminal
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- if you only want these mappings for toggle term use term://*toggleterm#* instead
|
|
||||||
vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()")
|
vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()")
|
||||||
--}}}
|
--}}}
|
||||||
|
|
||||||
--{{{ LSP mappings
|
--{{{ Groups
|
||||||
map("n", "gA", vim.lsp.buf.code_action, opts)
|
add_to_whichkey(nil, { key = "<leader>a", group = "AnyJump" })
|
||||||
map("n", "gd", ":Telescope lsp_definitions<CR>", opts)
|
add_to_whichkey(nil, { key = "<leader>b", group = "Buffers" })
|
||||||
map("n", "gDc", ":Telescope lsp_implementations<CR>", opts)
|
add_to_whichkey(nil, { key = "<leader>c", group = "Code" })
|
||||||
map("n", "gDf", ":Telescope lsp_definitions<CR>", opts)
|
add_to_whichkey(nil, { key = "<leader>ca", group = "Code Actions" })
|
||||||
map("n", "gF", ":edit <cfile><CR>", opts)
|
add_to_whichkey(nil, { key = "<leader>C", group = "CodeCompanion" })
|
||||||
map("n", "gT", ":Telescope lsp_type_definitions<CR>", opts)
|
add_to_whichkey(nil, { key = "<leader>d", group = "ODIS" })
|
||||||
map("n", "gb", ":Gitsigns blame_line<CR>", opts)
|
add_to_whichkey(nil, { key = "<leader>f", group = "Find" })
|
||||||
map("n", "gi", ":Telescope lsp_implementations<CR>", opts)
|
add_to_whichkey(nil, { key = "<leader>g", group = "Git" })
|
||||||
map("n", "gj", ":Telescope jumplist<CR>", opts)
|
add_to_whichkey(nil, { key = "<leader>gd", group = "DiffView" })
|
||||||
map("n", "gl", vim.lsp.codelens.run, opts)
|
add_to_whichkey(nil, { key = "<leader>gg", group = "Lazygit" })
|
||||||
map("n", "gr", ":Telescope lsp_references<CR>", opts)
|
add_to_whichkey(nil, { key = "<leader>h", group = "Help" })
|
||||||
map("n", "gs", vim.lsp.buf.signature_help, opts)
|
add_to_whichkey(nil, { key = "<leader>j", group = "AnyJump" })
|
||||||
map("n", "K", vim.lsp.buf.hover, opts)
|
add_to_whichkey(nil, { key = "<leader>N", group = "Noice" })
|
||||||
map("n", "<leader>kv", dsplit, opts)
|
add_to_whichkey(nil, { key = "<leader>o", group = "Open" })
|
||||||
map("n", "<leader>cd", ":Telescope lsp_definitions<CR>")
|
add_to_whichkey(nil, { key = "<leader>p", group = "Paste in Place" })
|
||||||
map("n", "<leader>ca", vim.lsp.buf.code_action)
|
add_to_whichkey(nil, { key = "<leader>s", group = "Search" })
|
||||||
map("n", "<leader>cci", ":Telescope lsp_incoming_calls<CR>")
|
add_to_whichkey(nil, { key = "<leader>t", group = "Terminal" })
|
||||||
map("n", "<leader>cco", ":Telescope lsp_outgoing_calls<CR>")
|
add_to_whichkey(nil, { key = "<leader>T", group = "Telescope" })
|
||||||
map("n", "<leader>ch", ":lua vim.lsp.buf.signature_help()<CR>")
|
add_to_whichkey(nil, { key = "<leader>w", group = "Workspace" })
|
||||||
map("n", "<leader>ci", ":Telescope lsp_implementations<CR>")
|
add_to_whichkey(nil, { key = "<leader>x", group = "Make Executable" })
|
||||||
map("n", "<leader>cr", ":Telescope lsp_references<CR>")
|
add_to_whichkey(nil, { key = "<leader>y", group = "System Yank" })
|
||||||
map("n", "<leader>cR", ":lua vim.lsp.buf.rename()<CR>")
|
add_to_whichkey(nil, { key = "<leader>0", group = "Horizontal Terminal" })
|
||||||
map("n", "<leader>cs", ":Telescope lsp_document_symbols<CR>")
|
|
||||||
map("n", "<leader>ct", ":Telescope lsp_type_definitions<CR>")
|
|
||||||
map("n", "<leader>cw", ":Telescope lsp_dynamic_workspace_symbols<CR>")
|
|
||||||
map("n", "<leader>cd", ":Telescope diagnostics theme=dropdown layout_config={width=0.8}<CR>")
|
|
||||||
map("n", "<leader>cDs", ":Telescope diagnostics theme=dropdown layout_config={width=0.8}<CR>")
|
|
||||||
map("n", "<leader>cDn", ":lua vim.diagnostic.goto_next()<CR>")
|
|
||||||
map("n", "<leader>cDp", ":lua vim.diagnostic.goto_prev()<CR<CR>")
|
|
||||||
map("n", "<leader>cl", ":lua vim.diagnostic.setloclist()<CR>")
|
|
||||||
map("n", "<leader>cH", open_doc_in_vsplit, opts)
|
|
||||||
--}}}
|
--}}}
|
||||||
|
|
||||||
--{{{ Code Companion and Copilot
|
--{{{ Whichkey Mappings
|
||||||
map("n", "<leader>cp", ":vert Copilot panel<CR>", opts)
|
add_to_whichkey(map_from_table(basic_mappings))
|
||||||
map("n", "<leader>oc", ":CodeCompanionChat Toggle<CR>")
|
add_to_whichkey(map_from_table(buffer_navigation_mappings))
|
||||||
map("n", "<leader>Cc", ":CodeCompanionChat Toggle<CR>", opts)
|
add_to_whichkey(map_from_table(terminal_mappings))
|
||||||
map("n", "<leader>Ci", ":CodeCompanion ", opts)
|
add_to_whichkey(map_from_table(lsp_mappings))
|
||||||
map("n", "<leader>CT", ":CodeCompanionChat Toggle<CR>", opts)
|
add_to_whichkey(map_from_table(code_companion_mappings))
|
||||||
map("n", "<leader>Ca", ":CodeCompanionActions<CR>", opts)
|
add_to_whichkey(map_from_table(telescope_mappings))
|
||||||
map("v", "<leader>Cc", ":CodeCompanionChat Add<CR>", opts)
|
add_to_whichkey(map_from_table(file_explorer_mappings))
|
||||||
map("v", "<leader>Ci", ":CodeCompanion /buffer ", notsilent)
|
add_to_whichkey(map_from_table(misc_utilities_mappings))
|
||||||
map("v", "<leader>Ce", ":CodeCompanion /explain<CR>", notsilent)
|
add_to_whichkey(map_from_table(goto_preview_mappings))
|
||||||
map("v", "<leader>Cf", ":CodeCompanion /fix<CR>", notsilent)
|
add_to_whichkey(map_from_table(workspace_management_mappings))
|
||||||
map("v", "<leader>Cl", ":CodeCompanion /lsp<CR>", notsilent)
|
add_to_whichkey(map_from_table(noice_mappings))
|
||||||
map("v", "<leader>Ct", ":CodeCompanion /tests<CR>", notsilent)
|
add_to_whichkey(map_from_table(odis_mappings))
|
||||||
--}}}
|
add_to_whichkey(map_from_table(diffview_mappings))
|
||||||
|
|
||||||
--{{{ Telescope mappings
|
|
||||||
-- {{{ Telescope Finders
|
|
||||||
map("n", "//", ":Telescope current_buffer_fuzzy_find previewer=false<CR>", opts)
|
|
||||||
map("n", "??", ":Telescope lsp_document_symbols theme=dropdown layout_config={width=0.5}<CR>", opts)
|
|
||||||
map(
|
|
||||||
"n",
|
|
||||||
"<leader>fc",
|
|
||||||
':Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
|
||||||
opts
|
|
||||||
)
|
|
||||||
map(
|
|
||||||
"n",
|
|
||||||
"<leader>Tc",
|
|
||||||
':Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
|
||||||
opts
|
|
||||||
)
|
|
||||||
map("n", "<leader>Tn", ":Telescope notify theme=dropdown layout_config={width=0.75}<CR>", opts)
|
|
||||||
|
|
||||||
map(
|
|
||||||
"n",
|
|
||||||
"<leader>ff",
|
|
||||||
":Telescope find_files find_command=rg,--ignore,--follow,--hidden,--files prompt_prefix=🔍<CR>",
|
|
||||||
opts
|
|
||||||
)
|
|
||||||
map("n", "<leader>fg", ":Telescope live_grep<CR>", opts)
|
|
||||||
map(
|
|
||||||
"n",
|
|
||||||
"<leader>Tg",
|
|
||||||
':Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
|
||||||
opts
|
|
||||||
)
|
|
||||||
map(
|
|
||||||
"n",
|
|
||||||
"<leader>fG",
|
|
||||||
':Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
|
||||||
opts
|
|
||||||
)
|
|
||||||
map("n", "<leader>fb", ":Telescope file_browser<CR>", opts)
|
|
||||||
map("n", "<leader>fr", ":Telescope oldfiles theme=dropdown layout_config={width=0.5}<CR>", opts)
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
--{{{ Telescope Help
|
|
||||||
map("n", "<leader>hc", ":Telescope commands<CR>")
|
|
||||||
map("n", "<leader>hv", ":Telescope vim_options<CR>")
|
|
||||||
map("n", "<leader>hk", ":Telescope keymaps<CR>")
|
|
||||||
map("n", "<leader>hs", ":Telescope spell_suggest<CR>")
|
|
||||||
map("n", "<leader>hm", ":Telescope man_pages theme=dropdown layout_config={width=0.75}<CR>")
|
|
||||||
--}}}
|
|
||||||
|
|
||||||
--{{{ Telescope Search
|
|
||||||
map(
|
|
||||||
"n",
|
|
||||||
"<leader>sf",
|
|
||||||
":Telescope find_files find_command=rg,--ignore,--follow,--hidden,--files prompt_prefix=🔍<CR>",
|
|
||||||
opts
|
|
||||||
)
|
|
||||||
map("n", "<leader>sF", ":Telescope fidget<CR>")
|
|
||||||
map("n", "<leader>sg", ":Telescope live_grep<CR>")
|
|
||||||
map("n", "<leader>sh", ":Telescope command_history<CR>")
|
|
||||||
map("n", "<leader>sm", ":Telescope man_pages<CR>")
|
|
||||||
map("n", "<leader>s/", ":Telescope search_history<CR>")
|
|
||||||
--}}}
|
|
||||||
|
|
||||||
--{{{ Git mappings
|
|
||||||
map("n", "<leader>gc", ":Telescope git_commits<CR>", opts)
|
|
||||||
map("n", "<leader>gf", ":Telescope git_files<CR>", opts)
|
|
||||||
--}}}
|
|
||||||
|
|
||||||
map("n", "<leader>Tr", ":Telescope reloader<CR>", opts)
|
|
||||||
|
|
||||||
map("n", "Q", ":Telescope cmdline<CR>", opts)
|
|
||||||
map("n", "<leader><leader>", ":Telescope cmdline<CR>", opts)
|
|
||||||
--}}}
|
|
||||||
|
|
||||||
--{{{ File explorer and tools
|
|
||||||
map("n", "<leader>nt", ":NvimTreeToggle<CR>", opts)
|
|
||||||
map("n", "<leader>nc", ":lua vim.notify.dismiss()>", opts)
|
|
||||||
map("n", "<leader>D", ":Dotenv .env<CR>", opts)
|
|
||||||
--}}}
|
|
||||||
|
|
||||||
--{{{ Misc utilities
|
|
||||||
map("n", "<leader>x", "<cmd>!chmod +x %<CR>", opts)
|
|
||||||
map("n", "<leader>y", '"+', opts)
|
|
||||||
map("v", "<leader>y", '"+', opts)
|
|
||||||
map("n", "<leader>sc", ":nohls<CR>")
|
|
||||||
--}}}
|
|
||||||
|
|
||||||
--{{{ Goto Preview
|
|
||||||
map("n", "gpc", ':lua require("goto-preview").close_all_win()<CR>')
|
|
||||||
map("n", "gpd", ':lua require("goto-preview").goto_preview_definition()<CR>')
|
|
||||||
map("n", "gpi", ':lua require("goto-preview").goto_preview_implementation()<CR>')
|
|
||||||
--}}}
|
|
||||||
|
|
||||||
--{{{ Workspace management
|
|
||||||
map("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts)
|
|
||||||
map("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts)
|
|
||||||
map("n", "<leader>wl", function()
|
|
||||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
|
||||||
end, opts)
|
|
||||||
--}}}
|
--}}}
|
||||||
|
@ -30,9 +30,42 @@ require("lazy").setup({
|
|||||||
install = { colorscheme = { "habamax" } },
|
install = { colorscheme = { "habamax" } },
|
||||||
-- automatically check for plugin updates
|
-- automatically check for plugin updates
|
||||||
checker = { enabled = true },
|
checker = { enabled = true },
|
||||||
|
dev = {
|
||||||
|
-- Directory where you store your local plugin projects. If a function is used,
|
||||||
|
-- the plugin directory (e.g. `~/projects/plugin-name`) must be returned.
|
||||||
|
---@type string | fun(plugin: LazyPlugin): string
|
||||||
|
path = "~/.config/nvim/test",
|
||||||
|
---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub
|
||||||
|
patterns = {}, -- For example {"folke"}
|
||||||
|
fallback = false, -- Fallback to git when local plugin doesn't exist
|
||||||
|
},
|
||||||
|
-- lazy can generate helptags from the headings in markdown readme files,
|
||||||
|
-- so :help works even for plugins that don't have vim docs.
|
||||||
|
-- when the readme opens with :help it will be correctly displayed as markdown
|
||||||
|
readme = {
|
||||||
|
enabled = true,
|
||||||
|
root = vim.fn.stdpath("state") .. "/lazy/readme",
|
||||||
|
files = { "README.md", "lua/**/README.md" },
|
||||||
|
-- only generate markdown helptags for plugins that don't have docs
|
||||||
|
skip_if_doc_exists = true,
|
||||||
|
},
|
||||||
|
state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things
|
||||||
|
-- Enable profiling of lazy.nvim. This will add some overhead,
|
||||||
|
-- so only enable this when you are debugging lazy.nvim
|
||||||
|
profiling = {
|
||||||
|
-- Enables extra stats on the debug tab related to the loader cache.
|
||||||
|
-- Additionally gathers stats about all package.loaders
|
||||||
|
loader = false,
|
||||||
|
-- Track each new require in the Lazy profiling tab
|
||||||
|
require = false,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.cmd("colorscheme catppuccin")
|
vim.cmd("colorscheme catppuccin")
|
||||||
require("core.keymaps")
|
require("core.keymaps")
|
||||||
require("core.lsp-notifications")
|
require("core.lsp-notifications")
|
||||||
require("extensions.telescope")
|
require("utils.extensions")
|
||||||
|
require("utils.telescope_extra").setup()
|
||||||
|
require("utils.git_paste").setup({
|
||||||
|
telescope_key = "<leader>pg",
|
||||||
|
})
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
return {
|
|
||||||
"https://git.sr.ht/~nedia/auto-format.nvim",
|
|
||||||
event = "BufWinEnter",
|
|
||||||
config = function()
|
|
||||||
require("auto-format").setup()
|
|
||||||
end
|
|
||||||
}
|
|
@ -6,13 +6,13 @@ return {
|
|||||||
"j-hui/fidget.nvim",
|
"j-hui/fidget.nvim",
|
||||||
},
|
},
|
||||||
opts = {
|
opts = {
|
||||||
log_level = "DEBUG",
|
|
||||||
adapters = {
|
adapters = {
|
||||||
copilot = function()
|
copilot = function()
|
||||||
return require("codecompanion.adapters").extend("copilot", {
|
return require("codecompanion.adapters").extend("copilot", {
|
||||||
schema = {
|
schema = {
|
||||||
model = {
|
model = {
|
||||||
default = "o3-mini-2025-01-31",
|
default = "claude-3.5-sonnet",
|
||||||
|
-- default = "o3-mini-2025-01-31",
|
||||||
choices = {
|
choices = {
|
||||||
["o3-mini-2025-01-31"] = { opts = { can_reason = true } },
|
["o3-mini-2025-01-31"] = { opts = { can_reason = true } },
|
||||||
["o1-2024-12-17"] = { opts = { can_reason = true } },
|
["o1-2024-12-17"] = { opts = { can_reason = true } },
|
||||||
@ -22,6 +22,9 @@ return {
|
|||||||
"gemini-2.0-flash-001",
|
"gemini-2.0-flash-001",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
max_tokens = {
|
||||||
|
default = 65536,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
@ -29,6 +32,10 @@ return {
|
|||||||
strategies = {
|
strategies = {
|
||||||
chat = {
|
chat = {
|
||||||
adapter = "copilot",
|
adapter = "copilot",
|
||||||
|
roles = {
|
||||||
|
llm = " Assistant",
|
||||||
|
user = " User",
|
||||||
|
},
|
||||||
slash_commands = {
|
slash_commands = {
|
||||||
["file"] = {
|
["file"] = {
|
||||||
opts = {
|
opts = {
|
||||||
@ -78,6 +85,10 @@ return {
|
|||||||
provider = "mini_diff",
|
provider = "mini_diff",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
opts = {
|
||||||
|
-- log_level = "DEBUG",
|
||||||
|
log_level = "TRACE",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
init = function()
|
init = function()
|
||||||
require("plugins.codecompanion.fidget-spinner"):init()
|
require("plugins.codecompanion.fidget-spinner"):init()
|
||||||
|
27
lua/plugins/diffview.lua
Normal file
27
lua/plugins/diffview.lua
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
return {
|
||||||
|
"sindrets/diffview.nvim",
|
||||||
|
dependencies = "nvim-tree/nvim-web-devicons",
|
||||||
|
opts = {
|
||||||
|
view = {
|
||||||
|
-- Disable the default normal mode mapping for `<tab>`:
|
||||||
|
-- ["<tab>"] = false,
|
||||||
|
-- Disable the default visual mode mapping for `gf`:
|
||||||
|
-- { "x", "gf", false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hooks = {
|
||||||
|
diff_buf_read = function(bufnr)
|
||||||
|
-- Change local options in diff buffers
|
||||||
|
vim.opt_local.wrap = false
|
||||||
|
vim.opt_local.list = false
|
||||||
|
vim.opt_local.colorcolumn = { 80 }
|
||||||
|
end,
|
||||||
|
view_opened = function(view)
|
||||||
|
require("notify").notify(
|
||||||
|
("A new %s was opened on tab page %d!"):format(view.class:name(), view.tabpage),
|
||||||
|
"info",
|
||||||
|
{ timeout = 5000, title = "Diffview" }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
30
lua/plugins/noice.lua
Normal file
30
lua/plugins/noice.lua
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
return {
|
||||||
|
"folke/noice.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {
|
||||||
|
lsp = {
|
||||||
|
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||||||
|
override = {
|
||||||
|
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||||
|
["vim.lsp.util.stylize_markdown"] = true,
|
||||||
|
["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- you can enable a preset for easier configuration
|
||||||
|
presets = {
|
||||||
|
bottom_search = true, -- use a classic bottom cmdline for search
|
||||||
|
command_palette = true, -- position the cmdline and popupmenu together
|
||||||
|
long_message_to_split = true, -- long messages will be sent to a split
|
||||||
|
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||||
|
lsp_doc_border = true, -- add a border to hover docs and signature help
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dependencies = {
|
||||||
|
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
-- OPTIONAL:
|
||||||
|
-- `nvim-notify` is only needed, if you want to use the notification view.
|
||||||
|
-- If not available, we use `mini` as the fallback
|
||||||
|
"rcarriga/nvim-notify",
|
||||||
|
}
|
||||||
|
}
|
52
lua/plugins/odis.lua
Normal file
52
lua/plugins/odis.lua
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
return {
|
||||||
|
url = "https://gitea.suda.codes/sudacode/odis",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
opts = {
|
||||||
|
display = {
|
||||||
|
default_mode = "vsplit",
|
||||||
|
picker = true,
|
||||||
|
float = {
|
||||||
|
maxwidth = 80,
|
||||||
|
maxheight = 40,
|
||||||
|
border = "rounded",
|
||||||
|
title = true,
|
||||||
|
style = "minimal",
|
||||||
|
auto_focus = true,
|
||||||
|
anchor = "bottom_right",
|
||||||
|
offset = { row = -2, col = -2 },
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
width = 0.4,
|
||||||
|
height = 0.25,
|
||||||
|
position = "bottom|right",
|
||||||
|
floating = false,
|
||||||
|
border = "none",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
integrations = {
|
||||||
|
treesitter = {
|
||||||
|
enabled = true, -- Enable Treesitter integration
|
||||||
|
highlight = true, -- Enable syntax highlighting
|
||||||
|
langs = { -- Language mapping for different doc types
|
||||||
|
lsp = "markdown",
|
||||||
|
man = "man",
|
||||||
|
help = "vimdoc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
lsp = { enabled = true },
|
||||||
|
vim = { enabled = true },
|
||||||
|
man = { enabled = true },
|
||||||
|
},
|
||||||
|
priority = { "LSP", "Vim", "Man" },
|
||||||
|
mappings = {
|
||||||
|
close = "<leader>dc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
@ -2,7 +2,7 @@ return {
|
|||||||
"nvim-telescope/telescope.nvim",
|
"nvim-telescope/telescope.nvim",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-lua/plenary.nvim",
|
"nvim-lua/plenary.nvim",
|
||||||
"jonarrien/telescope-cmdline.nvim",
|
-- "jonarrien/telescope-cmdline.nvim",
|
||||||
"nat-418/telescope-color-names.nvim",
|
"nat-418/telescope-color-names.nvim",
|
||||||
"nvim-telescope/telescope-file-browser.nvim",
|
"nvim-telescope/telescope-file-browser.nvim",
|
||||||
"ghassan0/telescope-glyph.nvim",
|
"ghassan0/telescope-glyph.nvim",
|
||||||
@ -11,6 +11,7 @@ return {
|
|||||||
"nvim-telescope/telescope-fzf-native.nvim",
|
"nvim-telescope/telescope-fzf-native.nvim",
|
||||||
build = "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release",
|
build = "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release",
|
||||||
},
|
},
|
||||||
|
"folke/noice.nvim",
|
||||||
},
|
},
|
||||||
opts = {
|
opts = {
|
||||||
defaults = {
|
defaults = {
|
||||||
|
@ -1,143 +1,144 @@
|
|||||||
return {
|
return {
|
||||||
"folke/which-key.nvim",
|
"folke/which-key.nvim",
|
||||||
config = function()
|
opts = {},
|
||||||
local wk = require("which-key")
|
-- config = function()
|
||||||
|
-- local wk = require("which-key")
|
||||||
|
|
||||||
wk.add({
|
-- wk.add({
|
||||||
{ "<leader>C", group = "CodeCompanion", desc = "CodeCompanion", icon = "" },
|
-- { "<leader>C", group = "CodeCompanion", desc = "CodeCompanion", icon = "" },
|
||||||
{ "<leader>Ca", desc = "CodeCompanion Actions" },
|
-- { "<leader>Ca", desc = "CodeCompanion Actions" },
|
||||||
{ "<leader>Cc", desc = "CodeCompanionChat" },
|
-- { "<leader>Cc", desc = "CodeCompanionChat" },
|
||||||
{ "<leader>Cd", desc = "Docstring" },
|
-- { "<leader>Cd", desc = "Docstring" },
|
||||||
{ "<leader>Ce", desc = "Explain Code" },
|
-- { "<leader>Ce", desc = "Explain Code" },
|
||||||
{ "<leader>Ci", desc = "Inline Chat" },
|
-- { "<leader>Ci", desc = "Inline Chat" },
|
||||||
{ "<leader>Cf", desc = "Fix Code" },
|
-- { "<leader>Cf", desc = "Fix Code" },
|
||||||
{ "<leader>Cl", desc = "Explain LSP Diagnostics" },
|
-- { "<leader>Cl", desc = "Explain LSP Diagnostics" },
|
||||||
{ "<leader>Ct", desc = "Generate Tests" },
|
-- { "<leader>Ct", desc = "Generate Tests" },
|
||||||
{ "<leader>CT", desc = "Toggle CodeCompanionChat" },
|
-- { "<leader>CT", desc = "Toggle CodeCompanionChat" },
|
||||||
-- { "<leader>Ci", desc = "Edit with Instructions" },
|
-- -- { "<leader>Ci", desc = "Edit with Instructions" },
|
||||||
-- { "<leader>Co", desc = "Optimize Code" },
|
-- -- { "<leader>Co", desc = "Optimize Code" },
|
||||||
-- { "<leader>Cs", desc = "Summarize" },
|
-- -- { "<leader>Cs", desc = "Summarize" },
|
||||||
{ "<leader>K", desc = "Show Docs", icon = "" },
|
-- { "<leader>K", desc = "Show Docs", icon = "" },
|
||||||
{ "<leader>T", group = "Telescope", icon = "" },
|
-- { "<leader>T", group = "Telescope", icon = "" },
|
||||||
{ "<leader>Tc", desc = "Color Names" },
|
-- { "<leader>Tc", desc = "Color Names" },
|
||||||
{ "<leader>Tg", desc = "Glyph" },
|
-- { "<leader>Tg", desc = "Glyph" },
|
||||||
{ "<leader>Tn", desc = "Notifications" },
|
-- { "<leader>Tn", desc = "Notifications" },
|
||||||
{ "<leader>Tt", desc = "Telescope" },
|
-- { "<leader>Tt", desc = "Telescope" },
|
||||||
{ "<leader>a", group = "AnyJump", icon = "" },
|
-- { "<leader>a", group = "AnyJump", icon = "" },
|
||||||
{ "<leader>ab", desc = "Back" },
|
-- { "<leader>ab", desc = "Back" },
|
||||||
{ "<leader>al", desc = "Last Result" },
|
-- { "<leader>al", desc = "Last Result" },
|
||||||
{ "<leader>b", group = "Buffers" },
|
-- { "<leader>b", group = "Buffers" },
|
||||||
{ "<leader>bb", desc = "Show Buffers" },
|
-- { "<leader>bb", desc = "Show Buffers" },
|
||||||
{ "<leader>bd", desc = "Delete Buffer" },
|
-- { "<leader>bd", desc = "Delete Buffer" },
|
||||||
{ "<leader>bn", desc = "Next Buffer" },
|
-- { "<leader>bn", desc = "Next Buffer" },
|
||||||
{ "<leader>bp", desc = "Previous Buffer" },
|
-- { "<leader>bp", desc = "Previous Buffer" },
|
||||||
{ "<leader>c", group = "Code", icon = "" },
|
-- { "<leader>c", group = "Code", icon = "" },
|
||||||
{ "<leader>cD", group = "Diagnostic List" },
|
-- { "<leader>cD", group = "Diagnostic List" },
|
||||||
{ "<leader>cDn", desc = "Next Diagnostic" },
|
-- { "<leader>cDn", desc = "Next Diagnostic" },
|
||||||
{ "<leader>cDp", desc = "Previous Diagnostic" },
|
-- { "<leader>cDp", desc = "Previous Diagnostic" },
|
||||||
{ "<leader>ca", desc = "Code Action" },
|
-- { "<leader>ca", desc = "Code Action" },
|
||||||
{ "<leader>cd", desc = "Diagnostics" },
|
-- { "<leader>cd", desc = "Diagnostics" },
|
||||||
{ "<leader>cl", desc = "Set Loclist" },
|
-- { "<leader>cl", desc = "Set Loclist" },
|
||||||
{ "<leader>cp", desc = "Copilot Panel" },
|
-- { "<leader>cp", desc = "Copilot Panel" },
|
||||||
{ "<leader>d", group = "Debug" },
|
-- { "<leader>d", group = "Debug" },
|
||||||
{ "<leader>dO", desc = "Step Out" },
|
-- { "<leader>dO", desc = "Step Out" },
|
||||||
{ "<leader>dP", group = "Dap-python" },
|
-- { "<leader>dP", group = "Dap-python" },
|
||||||
{ "<leader>dPc", desc = "Test Class" },
|
-- { "<leader>dPc", desc = "Test Class" },
|
||||||
{ "<leader>dPm", desc = "Test Method" },
|
-- { "<leader>dPm", desc = "Test Method" },
|
||||||
{ "<leader>dPs", desc = "Debug Selection" },
|
-- { "<leader>dPs", desc = "Debug Selection" },
|
||||||
{ "<leader>db", desc = "Toggle Breakpoint" },
|
-- { "<leader>db", desc = "Toggle Breakpoint" },
|
||||||
{ "<leader>dc", desc = "Continue" },
|
-- { "<leader>dc", desc = "Continue" },
|
||||||
{ "<leader>df", desc = "Frames" },
|
-- { "<leader>df", desc = "Frames" },
|
||||||
{ "<leader>dh", desc = "Hover" },
|
-- { "<leader>dh", desc = "Hover" },
|
||||||
{ "<leader>di", desc = "Step Into" },
|
-- { "<leader>di", desc = "Step Into" },
|
||||||
{ "<leader>dl", desc = "Run Last" },
|
-- { "<leader>dl", desc = "Run Last" },
|
||||||
{ "<leader>do", desc = "Step Over" },
|
-- { "<leader>do", desc = "Step Over" },
|
||||||
{ "<leader>dp", desc = "Preview" },
|
-- { "<leader>dp", desc = "Preview" },
|
||||||
{ "<leader>dr", desc = "REPL Open" },
|
-- { "<leader>dr", desc = "REPL Open" },
|
||||||
{ "<leader>ds", desc = "Scopes" },
|
-- { "<leader>ds", desc = "Scopes" },
|
||||||
{ "<leader>du", group = "Dap UI" },
|
-- { "<leader>du", group = "Dap UI" },
|
||||||
{ "<leader>duc", desc = "Close" },
|
-- { "<leader>duc", desc = "Close" },
|
||||||
{ "<leader>duo", desc = "Open" },
|
-- { "<leader>duo", desc = "Open" },
|
||||||
{ "<leader>dut", desc = "Toggle" },
|
-- { "<leader>dut", desc = "Toggle" },
|
||||||
{ "<leader>f", group = "Find File" },
|
-- { "<leader>f", group = "Find File" },
|
||||||
{ "<leader>fb", desc = "File Browser" },
|
-- { "<leader>fb", desc = "File Browser" },
|
||||||
{ "<leader>fc", desc = "File Color" },
|
-- { "<leader>fc", desc = "File Color" },
|
||||||
{ "<leader>ff", desc = "Find in Current Directory" },
|
-- { "<leader>ff", desc = "Find in Current Directory" },
|
||||||
{ "<leader>fg", desc = "Live Grep" },
|
-- { "<leader>fg", desc = "Live Grep" },
|
||||||
{ "<leader>fr", desc = "File Recent" },
|
-- { "<leader>fr", desc = "File Recent" },
|
||||||
{ "<leader>g", group = "Git" },
|
-- { "<leader>g", group = "Git" },
|
||||||
{ "<leader>gP", desc = "Close goto-preview window" },
|
-- { "<leader>gP", desc = "Close goto-preview window" },
|
||||||
{ "<leader>gR", desc = "Telescope References" },
|
-- { "<leader>gR", desc = "Telescope References" },
|
||||||
{ "<leader>gb", desc = "Blame" },
|
-- { "<leader>gb", desc = "Blame" },
|
||||||
{ "<leader>gc", desc = "Commit" },
|
-- { "<leader>gc", desc = "Commit" },
|
||||||
{ "<leader>gf", desc = "Files" },
|
-- { "<leader>gf", desc = "Files" },
|
||||||
{ "<leader>gg", desc = "Lazygit" },
|
-- { "<leader>gg", desc = "Lazygit" },
|
||||||
{ "<leader>gp", desc = "Peek" },
|
-- { "<leader>gp", desc = "Peek" },
|
||||||
{ "<leader>gpc", desc = "Close Preview" },
|
-- { "<leader>gpc", desc = "Close Preview" },
|
||||||
{ "<leader>gpd", desc = "Preview Definition" },
|
-- { "<leader>gpd", desc = "Preview Definition" },
|
||||||
{ "<leader>gpi", desc = "Preview Implementation" },
|
-- { "<leader>gpi", desc = "Preview Implementation" },
|
||||||
{ "<leader>h", group = "Help", icon = "" },
|
-- { "<leader>h", group = "Help", icon = "" },
|
||||||
{ "<leader>hc", desc = "Commands" },
|
-- { "<leader>hc", desc = "Commands" },
|
||||||
{ "<leader>hd", group = "Dap", icon = "" },
|
-- { "<leader>hd", group = "Dap", icon = "" },
|
||||||
{ "<leader>hdC", desc = "Configurations" },
|
-- { "<leader>hdC", desc = "Configurations" },
|
||||||
{ "<leader>hdb", desc = "Breakpoints" },
|
-- { "<leader>hdb", desc = "Breakpoints" },
|
||||||
{ "<leader>hdc", desc = "Commands" },
|
-- { "<leader>hdc", desc = "Commands" },
|
||||||
{ "<leader>hdf", desc = "Frames" },
|
-- { "<leader>hdf", desc = "Frames" },
|
||||||
{ "<leader>hdv", desc = "Variables" },
|
-- { "<leader>hdv", desc = "Variables" },
|
||||||
{ "<leader>hk", desc = "Keymaps" },
|
-- { "<leader>hk", desc = "Keymaps" },
|
||||||
{ "<leader>hs", desc = "Spell Suggest" },
|
-- { "<leader>hs", desc = "Spell Suggest" },
|
||||||
{ "<leader>hv", desc = "Vim Options" },
|
-- { "<leader>hv", desc = "Vim Options" },
|
||||||
{ "<leader>i", group = "Insert", icon = "" },
|
-- { "<leader>i", group = "Insert", icon = "" },
|
||||||
{ "<leader>is", group = "Snippet" },
|
-- { "<leader>is", group = "Snippet" },
|
||||||
{ "<leader>isp", desc = "Python File" },
|
-- { "<leader>isp", desc = "Python File" },
|
||||||
{ "<leader>j", desc = "Any Jump", icon = "" },
|
-- { "<leader>j", desc = "Any Jump", icon = "" },
|
||||||
{ "<leader>cD", desc = "Diagnostics" },
|
-- { "<leader>cD", desc = "Diagnostics" },
|
||||||
{ "<leader>cR", desc = "Rename" },
|
-- { "<leader>cR", desc = "Rename" },
|
||||||
{ "<leader>ca", desc = "Code Actions" },
|
-- { "<leader>ca", desc = "Code Actions" },
|
||||||
{ "<leader>cc", group = "Calls" },
|
-- { "<leader>cc", group = "Calls" },
|
||||||
{ "<leader>cci", desc = "Incoming" },
|
-- { "<leader>cci", desc = "Incoming" },
|
||||||
{ "<leader>cco", desc = "Outgoing" },
|
-- { "<leader>cco", desc = "Outgoing" },
|
||||||
{ "<leader>cd", desc = "Definitions" },
|
-- { "<leader>cd", desc = "Definitions" },
|
||||||
{ "<leader>ch", desc = "Signature Help" },
|
-- { "<leader>ch", desc = "Signature Help" },
|
||||||
{ "<leader>ci", desc = "Implementations" },
|
-- { "<leader>ci", desc = "Implementations" },
|
||||||
{ "<leader>cr", desc = "References" },
|
-- { "<leader>cr", desc = "References" },
|
||||||
{ "<leader>cs", desc = "Document Symbols" },
|
-- { "<leader>cs", desc = "Document Symbols" },
|
||||||
{ "<leader>ct", desc = "Type Definitions" },
|
-- { "<leader>ct", desc = "Type Definitions" },
|
||||||
{ "<leader>cw", desc = "Workspace Symbols" },
|
-- { "<leader>cw", desc = "Workspace Symbols" },
|
||||||
{ "<leader>n", desc = "NvimTree" },
|
-- { "<leader>n", desc = "NvimTree" },
|
||||||
{ "<leader>o", group = "Open", icon = "" },
|
-- { "<leader>o", group = "Open", icon = "" },
|
||||||
{ "<leader>oB", desc = "Btop" },
|
-- { "<leader>oB", desc = "Btop" },
|
||||||
{ "<leader>oC", desc = "Nvim Config" },
|
-- { "<leader>oC", desc = "Nvim Config" },
|
||||||
{ "<leader>oP", desc = "Ipython (fullscreen)" },
|
-- { "<leader>oP", desc = "Ipython (fullscreen)" },
|
||||||
{ "<leader>ob", desc = "File Browser" },
|
-- { "<leader>ob", desc = "File Browser" },
|
||||||
{ "<leader>oc", desc = "CodeCompanionChat" },
|
-- { "<leader>oc", desc = "CodeCompanionChat" },
|
||||||
{ "<leader>od", desc = "Lazydocker" },
|
-- { "<leader>od", desc = "Lazydocker" },
|
||||||
{ "<leader>of", desc = "Floating Terminal" },
|
-- { "<leader>of", desc = "Floating Terminal" },
|
||||||
{ "<leader>oh", desc = "Horizontal Terminal" },
|
-- { "<leader>oh", desc = "Horizontal Terminal" },
|
||||||
{ "<leader>op", desc = "Ipython" },
|
-- { "<leader>op", desc = "Ipython" },
|
||||||
{ "<leader>or", desc = "Ranger" },
|
-- { "<leader>or", desc = "Ranger" },
|
||||||
{ "<leader>ot", desc = "Vertical Terminal" },
|
-- { "<leader>ot", desc = "Vertical Terminal" },
|
||||||
{ "<leader>s", group = "Search" },
|
-- { "<leader>s", group = "Search" },
|
||||||
{ "<leader>sc", desc = "Clear Highlights" },
|
-- { "<leader>sc", desc = "Clear Highlights" },
|
||||||
{ "<leader>sf", desc = "Files" },
|
-- { "<leader>sf", desc = "Files" },
|
||||||
{ "<leader>tG", desc = "Glyph" },
|
-- { "<leader>tG", desc = "Glyph" },
|
||||||
{ "<leader>sg", desc = "Grep" },
|
-- { "<leader>sg", desc = "Grep" },
|
||||||
{ "<leader>sh", desc = "Command History" },
|
-- { "<leader>sh", desc = "Command History" },
|
||||||
{ "<leader>sm", desc = "Man Pages" },
|
-- { "<leader>sm", desc = "Man Pages" },
|
||||||
{ "<leader>t", group = "Toggle" },
|
-- { "<leader>t", group = "Toggle" },
|
||||||
{ "<leader>tP", desc = "Ipython (fullscreen)" },
|
-- { "<leader>tP", desc = "Ipython (fullscreen)" },
|
||||||
{ "<leader>tc", desc = "Colorscheme" },
|
-- { "<leader>tc", desc = "Colorscheme" },
|
||||||
{ "<leader>td", desc = "DBUI" },
|
-- { "<leader>td", desc = "DBUI" },
|
||||||
{ "<leader>tf", desc = "Floating Terminal" },
|
-- { "<leader>tf", desc = "Floating Terminal" },
|
||||||
{ "<leader>tp", desc = "Ipython" },
|
-- { "<leader>tp", desc = "Ipython" },
|
||||||
{ "<leader>tt", desc = "Split Terminal" },
|
-- { "<leader>tt", desc = "Split Terminal" },
|
||||||
{ "<leader>w", group = "Workspace" },
|
-- { "<leader>w", group = "Workspace" },
|
||||||
{ "<leader>wa", desc = "Add Folder" },
|
-- { "<leader>wa", desc = "Add Folder" },
|
||||||
{ "<leader>wl", desc = "List Folders" },
|
-- { "<leader>wl", desc = "List Folders" },
|
||||||
{ "<leader>wr", desc = "Remove Folder" },
|
-- { "<leader>wr", desc = "Remove Folder" },
|
||||||
{ "<leader>x", group = "Set Executable Bit", desc = "Set Executable Bit" },
|
-- { "<leader>x", group = "Set Executable Bit", desc = "Set Executable Bit" },
|
||||||
{ "<leader>y", desc = "System Yank", icon = "" },
|
-- { "<leader>y", desc = "System Yank", icon = "" },
|
||||||
{ "<leader>e", desc = "Edit", icon = "" },
|
-- { "<leader>e", desc = "Edit", icon = "" },
|
||||||
})
|
-- })
|
||||||
end,
|
-- end,
|
||||||
}
|
}
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
function open_doc_in_vsplit()
|
|
||||||
local word = vim.fn.expand("<cword>")
|
|
||||||
if word == "" then
|
|
||||||
vim.notify("No word under cursor", vim.log.levels.INFO)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Try to get LSP hover documentation
|
|
||||||
local params = vim.lsp.util.make_position_params()
|
|
||||||
local results = vim.lsp.buf_request_sync(0, "textDocument/hover", params, 1000) or {}
|
|
||||||
local doc_lines = nil
|
|
||||||
|
|
||||||
for _, res in pairs(results) do
|
|
||||||
local contents = res.result and res.result.contents
|
|
||||||
if contents then
|
|
||||||
doc_lines = vim.lsp.util.convert_input_to_markdown_lines(contents)
|
|
||||||
doc_lines = vim.lsp.util.trim_empty_lines(doc_lines)
|
|
||||||
if #doc_lines > 0 then
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if doc_lines and #doc_lines > 0 then
|
|
||||||
-- Open a new vertical split for LSP hover documentation
|
|
||||||
vim.cmd("vnew")
|
|
||||||
local bufnr = vim.api.nvim_get_current_buf()
|
|
||||||
-- Set the buffer to unmodifiable scratch buffer
|
|
||||||
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, doc_lines)
|
|
||||||
vim.bo[bufnr].modifiable = false
|
|
||||||
vim.bo[bufnr].bufhidden = "wipe"
|
|
||||||
vim.bo[bufnr].filetype = "markdown"
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Fallback to vim help command
|
|
||||||
local help_cmd = "vertical help " .. word
|
|
||||||
local ok, _ = pcall(vim.cmd, help_cmd)
|
|
||||||
if not ok then
|
|
||||||
vim.notify("No documentation available for '" .. word .. "'", vim.log.levels.INFO)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return open_doc_in_vsplit
|
|
3
lua/utils/extensions/init.lua
Normal file
3
lua/utils/extensions/init.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
return {
|
||||||
|
require("utils.extensions.telescope"),
|
||||||
|
}
|
@ -1,9 +1,7 @@
|
|||||||
local ts = require("telescope")
|
local ts = require("telescope")
|
||||||
ts.load_extension("fzf")
|
ts.load_extension("fzf")
|
||||||
ts.load_extension("glyph")
|
|
||||||
ts.load_extension("color_names")
|
ts.load_extension("color_names")
|
||||||
-- ts.load_extension("notify")
|
|
||||||
ts.load_extension("cmdline")
|
|
||||||
ts.load_extension("file_browser")
|
ts.load_extension("file_browser")
|
||||||
ts.load_extension("codecompanion")
|
ts.load_extension("glyph")
|
||||||
ts.load_extension("ui-select")
|
ts.load_extension("ui-select")
|
||||||
|
ts.load_extension("noice")
|
57
lua/utils/git_paste/init.lua
Normal file
57
lua/utils/git_paste/init.lua
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
--- Fetches the content from the given URL and then pastes the contents below the current line.
|
||||||
|
---@param url string The URL to fetch (expects a Git raw URL).
|
||||||
|
function M.fetch_and_paste(url)
|
||||||
|
if not url or url == "" then
|
||||||
|
vim.notify("git-paste: No URL provided.", vim.log.levels.WARN)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Use curl to fetch the raw file content
|
||||||
|
local result = vim.fn.system({ "curl", "-s", url })
|
||||||
|
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
vim.notify("git-paste: Failed to fetch content from URL:\n" .. result, vim.log.levels.ERROR)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Split the result into lines. This creates a table with each line.
|
||||||
|
local lines = vim.split(result, "\n")
|
||||||
|
|
||||||
|
-- Get the current cursor position. This returns a table {line, col}
|
||||||
|
-- Nvim's API for setting lines expects 0-indexed line numbers.
|
||||||
|
local pos = vim.api.nvim_win_get_cursor(0)
|
||||||
|
-- Insert the fetched lines after the current cursor line.
|
||||||
|
-- Since pos[1] is 1-indexed, we use it directly as the insertion index (which is 0-indexed)
|
||||||
|
-- when inserting *after* the current line.
|
||||||
|
local insert_at = pos[1]
|
||||||
|
vim.api.nvim_buf_set_lines(0, insert_at, insert_at, false, lines)
|
||||||
|
|
||||||
|
vim.notify("git-paste: Content pasted successfully", vim.log.levels.INFO)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Prompts the user for a Git raw URL and then pastes the fetched content.
|
||||||
|
function M.git_paste_prompt()
|
||||||
|
vim.ui.input({ prompt = "Git raw URL: " }, function(input)
|
||||||
|
if input then
|
||||||
|
M.fetch_and_paste(input)
|
||||||
|
else
|
||||||
|
vim.notify("git-paste: No URL provided", vim.log.levels.WARN)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Sets up the git-paste module.
|
||||||
|
---
|
||||||
|
--- The module expects an optional configuration table:
|
||||||
|
--- { telescope_key = "<leader>pg" } (or any other keymap you prefer)
|
||||||
|
---
|
||||||
|
---@param opts table|nil
|
||||||
|
function M.setup(opts)
|
||||||
|
opts = opts or {}
|
||||||
|
local telescope_key = opts.telescope_key or "<leader>pg"
|
||||||
|
vim.keymap.set("n", telescope_key, M.git_paste_prompt, { desc = "Git Paste: paste content from git raw URL" })
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
12
lua/utils/keymaps/converters/from_table/init.lua
Normal file
12
lua/utils/keymaps/converters/from_table/init.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
local M = {}
|
||||||
|
local map = vim.keymap.set
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
function M.set_keybindings(bindings)
|
||||||
|
for _, binding in ipairs(bindings) do
|
||||||
|
map(binding.mode, binding.key, binding.cmd, binding.opts or opts)
|
||||||
|
end
|
||||||
|
return bindings
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
48
lua/utils/keymaps/converters/whichkey/init.lua
Normal file
48
lua/utils/keymaps/converters/whichkey/init.lua
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
local whichkey = require("which-key")
|
||||||
|
vim.notify = require("notify")
|
||||||
|
|
||||||
|
---Helper function to add mappings to which-key
|
||||||
|
---@parm mappings table : List of mappings to add to which-key
|
||||||
|
---@parm group table : Group to add mappings to (optional)
|
||||||
|
---@return nil
|
||||||
|
---@usage addToWhichKey(mappings, group)
|
||||||
|
---@example addToWhichKey({{key = "n", cmd = "next", mode = "n", desc = "Next Line", group = "Navigation"}, {key = "t", group = "example"})
|
||||||
|
function M.addToWhichKey(mappings, group)
|
||||||
|
local wk_mappings = {}
|
||||||
|
if group then
|
||||||
|
whichkey.add({ group.key, group = group.group })
|
||||||
|
end
|
||||||
|
if not mappings and not group then
|
||||||
|
vim.notify("Error: Mappings is nil", "error")
|
||||||
|
return
|
||||||
|
elseif not mappings and group then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
for _, mapping in ipairs(mappings) do
|
||||||
|
if not mapping.key or mapping.key == "" then
|
||||||
|
vim.notify("Error: Key is empty or nil", "error")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mapping.cmd or mapping.cmd == "" then
|
||||||
|
vim.notify("Error: Command is empty or nil for key: " .. mapping.key, "error")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mapping.mode or mapping.mode == "" then
|
||||||
|
vim.notify("Error: Mode is empty or nil for key: " .. mapping.key, "error")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
wk_mappings[1] = mapping.key
|
||||||
|
wk_mappings[2] = mapping.cmd
|
||||||
|
wk_mappings.mode = mapping.mode
|
||||||
|
wk_mappings.desc = mapping.desc or "No Description"
|
||||||
|
wk_mappings.group = mapping.group or "No Group"
|
||||||
|
whichkey.add(wk_mappings)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
4
lua/utils/keymaps/init.lua
Normal file
4
lua/utils/keymaps/init.lua
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
require('utils.keymaps.converters.whichkey'),
|
||||||
|
require('utils.keymaps.converters.from_table'),
|
||||||
|
}
|
68
lua/utils/telescope_extra/init.lua
Normal file
68
lua/utils/telescope_extra/init.lua
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
local telescope = require("telescope")
|
||||||
|
local telescopeConfig = require("telescope.config")
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.setup()
|
||||||
|
-- Clone the default Telescope configuration
|
||||||
|
local vimgrep_arguments = { unpack(telescopeConfig.values.vimgrep_arguments) }
|
||||||
|
|
||||||
|
-- I want to search in hidden/dot files.
|
||||||
|
table.insert(vimgrep_arguments, "--hidden")
|
||||||
|
-- I don't want to search in the `.git` directory.
|
||||||
|
table.insert(vimgrep_arguments, "--glob")
|
||||||
|
table.insert(vimgrep_arguments, "!**/.git/*")
|
||||||
|
telescope.setup({
|
||||||
|
defaults = {
|
||||||
|
-- `hidden = true` is not supported in text grep commands.
|
||||||
|
vimgrep_arguments = vimgrep_arguments,
|
||||||
|
},
|
||||||
|
pickers = {
|
||||||
|
find_files = {
|
||||||
|
-- `hidden = true` will still show the inside of `.git/` as it's not `.gitignore`d.
|
||||||
|
find_command = { "rg", "--files", "--hidden", "--glob", "!**/.git/*" },
|
||||||
|
mappings = {
|
||||||
|
n = {
|
||||||
|
["cd"] = function(prompt_bufnr)
|
||||||
|
local selection = require("telescope.actions.state").get_selected_entry()
|
||||||
|
local dir = vim.fn.fnamemodify(selection.path, ":p:h")
|
||||||
|
require("telescope.actions").close(prompt_bufnr)
|
||||||
|
-- Depending on what you want put `cd`, `lcd`, `tcd`
|
||||||
|
vim.cmd(string.format("silent lcd %s", dir))
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
preview = {
|
||||||
|
-- show images in telescope using kitty
|
||||||
|
mime_hook = function(filepath, bufnr, opts)
|
||||||
|
local is_image = function(filepath)
|
||||||
|
local image_extensions = { "png", "jpg" } -- Supported image formats
|
||||||
|
local split_path = vim.split(filepath:lower(), ".", { plain = true })
|
||||||
|
local extension = split_path[#split_path]
|
||||||
|
return vim.tbl_contains(image_extensions, extension)
|
||||||
|
end
|
||||||
|
if is_image(filepath) then
|
||||||
|
local term = vim.api.nvim_open_term(bufnr, {})
|
||||||
|
local function send_output(_, data, _)
|
||||||
|
for _, d in ipairs(data) do
|
||||||
|
vim.api.nvim_chan_send(term, d .. "\r\n")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vim.fn.jobstart({
|
||||||
|
"kitty +icat " .. filepath, -- Terminal image viewer command
|
||||||
|
}, { on_stdout = send_output, stdout_buffered = true, pty = true })
|
||||||
|
else
|
||||||
|
require("telescope.previewers.utils").set_preview_message(
|
||||||
|
bufnr,
|
||||||
|
opts.winid,
|
||||||
|
"Binary cannot be previewed"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
6
lua/utils/terminal/init.lua
Normal file
6
lua/utils/terminal/init.lua
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.term_factory = require("utils.terminal.term_factory").term_factory
|
||||||
|
M.term_toggle = require("utils.terminal.toggle").term_toggle
|
||||||
|
|
||||||
|
return M
|
12
lua/utils/terminal/term_factory/init.lua
Normal file
12
lua/utils/terminal/term_factory/init.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
local Terminal = require("toggleterm.terminal").Terminal
|
||||||
|
local notify = require("notify")
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.term_factory(cfg)
|
||||||
|
cfg["on_stderr"] = function(_, job, data, name)
|
||||||
|
notify(name .. " encountered an error on job: " .. job .. "\nData: " .. data, "error")
|
||||||
|
end
|
||||||
|
return Terminal:new(cfg)
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
9
lua/utils/terminal/toggle/init.lua
Normal file
9
lua/utils/terminal/toggle/init.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.term_toggle(term)
|
||||||
|
if term then
|
||||||
|
term:toggle()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
Loading…
x
Reference in New Issue
Block a user