local pickers = require("telescope.pickers") local finders = require("telescope.finders") local conf = require("telescope.config").values local actions = require("telescope.actions") local action_set = require("telescope.actions.set") local action_state = require("telescope.actions.state") local harpoon = require('harpoon') local M = {} function M.switcher() local filepaths = {} for _, item in ipairs(harpoon:list().items) do table.insert(filepaths, item.value) end pickers.new({ prompt_title = "Harpoon", finder = finders.new_table { results = filepaths }, sorter = conf.generic_sorter(), previewer = conf.file_previewer {}, attach_mappings = function(prompt_bufnr, map) actions.move_selection_previous:replace(function() action_set.shift_selection(prompt_bufnr, -1) end) actions.move_selection_next:replace(function() action_set.shift_selection(prompt_bufnr, 1) end) -- remove harpoon item -- TODO: -- select items, and open buffer vim.keymap.set("n", "", function() if action_state.get_selected_entry() then actions.close(prompt_bufnr) vim.cmd("vsplit "..action_state.get_selected_entry()[1]) end end) vim.keymap.set({ "n", "i" }, "", function() if action_state.get_selected_entry() then actions.close(prompt_bufnr) vim.cmd("split "..action_state.get_selected_entry()[1]) end end) actions.select_default:replace(function() if action_state.get_selected_entry() then actions.close(prompt_bufnr) vim.cmd("e "..action_state.get_selected_entry()[1]) end end) return true end }):find() end return M