Neovim Config
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}