local pickers = require("telescope.pickers")
local finders = require("telescope.finders")
local previewers = require("telescope.previewers")
local action_state = require("telescope.actions.state")
local conf = require("telescope.config").values
local actions = require("telescope.actions")

require("telescope").setup({
	defaults = {
		file_sorter = require("telescope.sorters").get_fzy_sorter,
		prompt_prefix = " >",
		color_devicons = true,

		file_previewer = require("telescope.previewers").vim_buffer_cat.new,
		grep_previewer = require("telescope.previewers").vim_buffer_vimgrep.new,
		qflist_previewer = require("telescope.previewers").vim_buffer_qflist.new,

		mappings = {
			i = {
				["<C-x>"] = false,
				["<C-q>"] = actions.send_to_qflist,
			},
		},
	},
})

local M = {}

function git_branches ()
	require("telescope.builtin").git_branches({
		attach_mappings = function(_, map)
			map("i", "<c-d>", actions.git_delete_branch)
			map("n", "<c-d>", actions.git_delete_branch)
			return true
		end,
	})
end

local options = { noremap = true }

-- vim.keymap.set('n', '<C-g>', function()
--     local term = vim.fn.input("Grep For > ")
--     if term == '' then
--         return
--     end
--     require('telescope.builtin').grep_string({ search = term })
-- end, options)

vim.keymap.set('n', '<C-g>', require('telescope.builtin').live_grep, options)

vim.keymap.set('n', '<C-p>', function()
    local ran, errorMessage = pcall(function()
        require('telescope.builtin').git_files({ show_untracked = true })
    end)
    if not ran then
        require('telescope.builtin').find_files()
    end
end, options)

vim.keymap.set('n', '<leader>df', function()
	require("telescope.builtin").find_files({
		prompt_title = "< VimRC >",
		cwd = vim.fn.expand('~/.config/nvim'),
		hidden = true,
	})
end, options)

-- vim.keymap.set('n', '<C-q>', function()
-- end, options)

vim.keymap.set('n', '<leader>fb', require('telescope.builtin').buffers, options)
vim.keymap.set('n', '<leader>fo', require('telescope.builtin').oldfiles, options)
vim.keymap.set('n', 'gr', require('telescope.builtin').lsp_references, options)

vim.keymap.set('n', '<leader>m', require('telescope.builtin').marks, options)
vim.keymap.set('n', '<leader>ch', require('telescope.builtin').command_history, options)

vim.keymap.set('n', '<leader>gb', git_branches, options)
vim.keymap.set('n', '<leader>gs', require('telescope.builtin').git_status, options)
