local snacks = require('snacks')

snacks.setup {
  bigfile = { enabled = true },
  dashboard = { enabled = true },
  explorer = { enabled = true },
  indent = { enabled = false }, -- Use hlchunk.nvim
  input = { enabled = true },
  picker = { enabled = true },
  notifier = { enabled = false }, -- Use nvim-notify
  quickfile = { enabled = true },
  scope = { enabled = true },
  scroll = { enabled = true },
  statuscolumn = { enabled = true },
  words = { enabled = true },
}

-- Keymaps {{{
-- Top Pickers & Explorer
vim.keymap.set('n', '<Leader><Space>', snacks.picker.smart)
-- vim.keymap.set('n', '<Leader>,', snacks.picker.buffers)
vim.keymap.set('n', '<Leader>/', snacks.picker.grep)
vim.keymap.set('n', '<Leader>:', snacks.picker.command_history)
-- vim.keymap.set('n', '<Leader>n', snacks.picker.notifications) -- TODO: Conflicting keymap
vim.keymap.set('n', '<Leader>e', snacks.picker.explorer)
-- Find
vim.keymap.set('n', '<Leader>fb', snacks.picker.buffers)
vim.keymap.set('n', '<Leader>fc', snacks.picker.smart)
vim.keymap.set('n', '<Leader>ff', snacks.picker.smart)
vim.keymap.set('n', '<Leader>fg', snacks.picker.git_files)
vim.keymap.set('n', '<Leader>fp', snacks.picker.projects)
vim.keymap.set('n', '<Leader>fr', snacks.picker.recent)
-- Git
vim.keymap.set('n', '<Leader>gb', snacks.picker.git_branches)
vim.keymap.set('n', '<Leader>gl', snacks.picker.git_log)
vim.keymap.set('n', '<Leader>gL', snacks.picker.git_log_line)
vim.keymap.set('n', '<Leader>gs', snacks.picker.git_status)
vim.keymap.set('n', '<Leader>gS', snacks.picker.git_stash)
vim.keymap.set('n', '<Leader>gd', snacks.picker.git_diff)
vim.keymap.set('n', '<Leader>gf', snacks.picker.git_log_file)
-- Grep
vim.keymap.set('n', '<Leader>sb', snacks.picker.lines)
vim.keymap.set('n', '<Leader>sB', snacks.picker.grep_buffers)
vim.keymap.set('n', '<Leader>sg', snacks.picker.grep)
vim.keymap.set('n', '<Leader>sw', snacks.picker.grep_word)
-- Search
-- vim.keymap.set('n', '<Leader>s', snacks.picker.registers)
vim.keymap.set('n', '<Leader>s/', snacks.picker.search_history)
vim.keymap.set('n', '<Leader>sa', snacks.picker.autocmds)
vim.keymap.set('n', '<Leader>sb', snacks.picker.lines)
vim.keymap.set('n', '<Leader>sc', snacks.picker.command_history)
vim.keymap.set('n', '<Leader>sC', snacks.picker.commands)
vim.keymap.set('n', '<Leader>sd', snacks.picker.diagnostics)
-- vim.keymap.set('n', '<Leader>sD', snacks.picker.diagnostics_buffer) -- FIXME: No results found for 'diagnostics_buffer'
vim.keymap.set('n', '<Leader>sh', snacks.picker.help)
vim.keymap.set('n', '<Leader>sH', snacks.picker.highlights)
vim.keymap.set('n', '<Leader>si', snacks.picker.icons)
vim.keymap.set('n', '<Leader>sj', snacks.picker.jumps)
vim.keymap.set('n', '<Leader>sk', snacks.picker.keymaps)
-- vim.keymap.set('n', '<Leader>sl', snacks.picker.loclist) -- FIXME: No results found for 'loclist'
vim.keymap.set('n', '<Leader>sm', snacks.picker.marks)
vim.keymap.set('n', '<Leader>sM', snacks.picker.man)
-- vim.keymap.set('n', '<Leader>sp', snacks.picker.lazy) -- FIXME: No results found for 'lazy'
vim.keymap.set('n', '<Leader>sq', snacks.picker.qflist) -- FIXME: No results found for 'qflist'
vim.keymap.set('n', '<Leader>sR', snacks.picker.resume)
vim.keymap.set('n', '<Leader>su', snacks.picker.undo)
vim.keymap.set('n', '<Leader>uC', snacks.picker.colorschemes)
-- Other
-- vim.keymap.set('n', '<Leader>z', snacks.zen) -- FIXME: Not found
vim.keymap.set('n', '<Leader>Z', snacks.zen.zoom)
-- vim.keymap.set('n', '<Leader>.', snacks.scratch)
vim.keymap.set('n', '<Leader>S', snacks.scratch.select) -- FIXME: No results found for 'select'
-- vim.keymap.set('n', '<Leader>n', snacks.notifier.show_history) -- TODO: Conflicting keymap
-- vim.keymap.set('n', '<Leader>bd', snacks.bufdelete) -- FIXME: Not found
vim.keymap.set('n', '<Leader>cR', snacks.rename.rename_file)
-- vim.keymap.set('n', '<Leader>gB', snacks.gitbrowse) -- FIXME: Not found
-- vim.keymap.set('n', '<Leader>gg', snacks.lazygit) -- FIXME: Not found
vim.keymap.set('n', '<Leader>un', snacks.notifier.hide)
-- vim.keymap.set('n', '<C-/>', snacks.terminal) -- FIXME: Not found
-- vim.keymap.set('n', '<C-_>', snacks.terminal) -- FIXME: Not found