local mapSilent = require("my.keymaps").mapSilent local arpeggio = require("my.plugins.arpeggio") local M = {} local bindings = { builtin = { -- Open files with control + P find_files = "<c-P>", -- Search through files with control + F live_grep = "<c-F>", -- See diagnostics with space + d lsp_document_diagnostics = "<Leader>d", lsp_workspace_diagnostics = "<Leader>wd", lsp_code_actions = "<Leader>ca", -- Open a list with all the pickers builtin = "<Leader>t", -- List function, var names etc treesitter = "<Leader>s", -- Git stuff git_commits = "<Leader>gj", git_branches = "<Leader>gk" }, ["extensions.file_browser.file_browser"] = {chord = 1, key = "jp"}, extensions = { unicode = { picker = {mode = "i", kind = "dropdown", key = "ui", chord = 1} } } } local function setupKeybinds(obj, path) if path == nil then path = "" end for name, keybinds in pairs(obj) do if (type(keybinds) == "table") and keybinds.key == nil then -- This means we found a table of keybinds, so we go deeper setupKeybinds(keybinds, path .. "." .. name) else local config = keybinds local pickerArgument = "" local key = config local mode = "n" local bind = mapSilent if type(config) == "table" then key = config.key if config.mode ~= nil then mode = config.mode end if config.kind ~= nil then pickerArgument = "require('telescope.themes').get_" .. config.kind .. "({})" end if config.chord then -- Useful for insert mode bindings bind = arpeggio.chordSilent end end -- Maps the keybind to the action bind(mode, key, "<cmd>lua require('telescope" .. path .. "')." .. name .. "(" .. pickerArgument .. ")<CR>") end end end function M.setup() setupKeybinds(bindings) local settings = { defaults = {mappings = {i = {["<C-h>"] = "which_key"}}}, pickers = {find_files = {hidden = true}}, extensions = { file_browser = { mappings = { -- Comment so this does not get collapsed } } } } require("telescope").setup(settings) require("telescope").load_extension "file_browser" end return M