{ pkgs, ... }:
{
  # keymaps for this plugin are difined in config/keymaps/window-movements module
  extraPlugins = with pkgs.vimPlugins; [
    harpoon2
  ];
  extraConfigLua = ''
    local harpoon = require("harpoon")
    harpoon:setup(
      {
        settings = {
          save_on_toggle = true,
          sync_on_ui_close = true,
          key = function()
              return vim.loop.cwd()
          end,
        },
      }
    )

    -- basic telescope configuration
    -- local conf = require("telescope.config").values
    -- local function toggle_telescope(harpoon_files)
    --     local file_paths = {}
    --     for _, item in ipairs(harpoon_files.items) do
    --         table.insert(file_paths, item.value)
    --     end
    --
    --     require("telescope.pickers").new({}, {
    --         prompt_title = "Harpoon",
    --         finder = require("telescope.finders").new_table({
    --             results = file_paths,
    --         }),
    --         previewer = conf.file_previewer({}),
    --         sorter = conf.generic_sorter({}),
    --         layout_strategy = getLayoutStrategy()
    --     }):find()
    -- end
    --
    -- vim.keymap.set("n", "<C-e>", function() toggle_telescope(harpoon:list()) end,
    --     { desc = "Open harpoon window" })
    vim.keymap.set("n", "<C-e>", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end)
    vim.keymap.set("n", "<leader>a", function() harpoon:list():add() end)

    vim.keymap.set("n", "<C-a>", function() harpoon:list():select(1) end)
    vim.keymap.set("n", "<C-s>", function() harpoon:list():select(2) end)
    vim.keymap.set("n", "<C-f>", function() harpoon:list():select(3) end)
    vim.keymap.set("n", "<C-g>", function() harpoon:list():select(4) end)
    -- Toggle previous & next buffers stored within Harpoon list
    vim.keymap.set("n", "<C-S-k>", function() harpoon:list():prev() end)
    vim.keymap.set("n", "<C-S-j>", function() harpoon:list():next() end)
  '';
}