at dominant 2.3 kB view raw
1return { 2 'ThePrimeagen/harpoon', 3 branch = "harpoon2", 4 dependencies = { 5 'nvim-lua/plenary.nvim', 6 'nvim-telescope/telescope.nvim', 7 8 }, 9 10 config = function() 11 local harpoon = require("harpoon") 12 13 -- REQUIRED 14 harpoon:setup() 15 -- REQUIRED 16 17 local conf = require("telescope.config").values 18 19 local function toggle_telescope(harpoon_files) 20 local finder = function() 21 local paths = {} 22 for _, item in ipairs(harpoon_files.items) do 23 table.insert(paths, item.value) 24 end 25 26 return require("telescope.finders").new_table({ 27 results = paths, 28 }) 29 end 30 31 require("telescope.pickers").new({}, { 32 prompt_title = "Harpoon", 33 finder = finder(), 34 previewer = conf.file_previewer({}), 35 sorter = conf.generic_sorter({}), 36 attach_mappings = function(prompt_bufnr, map) 37 map("i", "<C-d>", function() 38 local state = require("telescope.actions.state") 39 local selected_entry = state.get_selected_entry() 40 local current_picker = state.get_current_picker(prompt_bufnr) 41 42 table.remove(harpoon_files.items, selected_entry.index) 43 current_picker:refresh(finder()) 44 end) 45 return true 46 end, 47 }):find() 48 end 49 50 vim.keymap.set("n", "<C-e>", function() toggle_telescope(harpoon:list()) end, 51 { desc = "Open harpoon window" }) 52 53 vim.keymap.set("n", "<leader>a", function() harpoon:list():add() end) 54 55 vim.keymap.set("n", "<C-h>", function() harpoon:list():select(1) end) 56 vim.keymap.set("n", "<C-j>", function() harpoon:list():select(2) end) 57 vim.keymap.set("n", "<C-k>", function() harpoon:list():select(3) end) 58 vim.keymap.set("n", "<C-l>", function() harpoon:list():select(4) end) 59 60 -- Toggle previous & next buffers stored within Harpoon list 61 vim.keymap.set("n", "<C-S-P>", function() harpoon:list():prev() end) 62 vim.keymap.set("n", "<C-S-N>", function() harpoon:list():next() end) 63 64 end 65}