-- Telescope, and other file picker-related plugins

return {
  {
    "nvim-telescope/telescope.nvim",
    lazy = false,
    requires = {
      "nvim-lua/plenary.nvim",
      "xvzc/chezmoi.nvim",
    },
    config = function()
      local telescope = require("telescope")
      telescope.setup({})
      telescope.load_extension("chezmoi")
    end,
    keys = {
      {
        "<leader><space>",
        "<cmd>Telescope find_files<cr>",
        desc = "Find files",
      },
      {
        "<leader>ss",
        "<cmd>Telescope current_buffer_fuzzy_find<cr>",
        desc = "Search in buffer",
      },
      {
        "<leader>cd",
        "<cmd>Telescope diagnostics bufnr=0<cr>",
        desc = "List diagnostics",
      },
      {
        "<leader>sp",
        "<cmd>Telescope live_grep<cr>",
        desc = "Search in project",
      },
      {
        "<leader>bb",
        "<cmd>Telescope buffers<cr>",
        desc = "Find buffer",
      },
    },
  },
  {
    "xvzc/chezmoi.nvim",
    config = function()
      require("chezmoi").setup({
        -- Treat all files in my chezmoi source directory as source files
        vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
          pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/*" },
          callback = function(evt)
            local bufnr = evt.buf
            local edit_watch = function()
              require("chezmoi.commands.__edit").watch(bufnr)
            end
            vim.schedule(edit_watch)
          end,
        }),
      })
    end,
    keys = {
      {
        "<leader>fc",
        "<cmd>Telescope chezmoi find_files<cr>",
        desc = "Find Chezmoi-managed files",
      },
    },
  },
}