local mapSilent = require("my.keymaps").mapSilent local arpeggio = require("my.plugins.arpeggio") local M = {} local bindings = { builtin = { -- Open files with control + P find_files = "", -- Search through files with control + F live_grep = "", -- See diagnostics with space + d lsp_document_diagnostics = "d", lsp_workspace_diagnostics = "wd", lsp_code_actions = "ca", -- Open a list with all the pickers builtin = "t", -- List function, var names etc treesitter = "s", -- Git stuff git_commits = "gj", git_branches = "gk" }, ["extensions.file_browser.file_browser"] = "p", 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, "lua require('telescope" .. path .. "')." .. name .. "(" .. pickerArgument .. ")") end end end function M.setup() setupKeybinds(bindings) local settings = { defaults = {mappings = {i = {[""] = "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