local options = { noremap = true }

-- Source init.lua
vim.api.nvim_set_keymap('n', '<leader>so', '<cmd>source ~/.config/nvim/init.lua<CR>', options)

-- Don't copy "c" changes to primary register
vim.api.nvim_set_keymap('n', 'c', '"_c', options)

-- Easily open splits
vim.api.nvim_set_keymap('n', '<leader>hs', '<cmd>split<cr>', options)
vim.api.nvim_set_keymap('n', '<leader>vs', '<cmd>vsplit<cr>', options)

-- Copy the entire file
vim.api.nvim_set_keymap('n', '<leader>y', 'ggyG<C-o>', options)

-- Manually store session
vim.api.nvim_set_keymap('n', '<F5>', '<cmd>mksession! ~/.cache//nvim/session/manual_session.vim<CR>', options)
-- Restore manually stored session
vim.api.nvim_set_keymap('n', '<F6>', '<cmd>source ~/.cache/nvim/session/manual_session.vim<CR>', options)
-- Restore auto saved session created on exit
vim.api.nvim_set_keymap('n', '<F7>', '<cmd>source ~/.cache/nvim/session/shutdown_session.vim<CR>', options)

-- Replace all is aliased to S.
vim.api.nvim_set_keymap('n', '<C-s>', '<cmd>%s//g<Left><Left>', options)

-- Navigating with guides
vim.api.nvim_set_keymap('n', '<leader><leader>', '<Esc>/<++><Enter>"_c4l', options)
-- vim.api.nvim_set_keymap('i', '<leader><leader>', '<Esc>/<++><Enter>"_c4l', options)
vim.api.nvim_set_keymap('v', '<leader><leader>', '<Esc>/<++><Enter>"_c4l', options)

-- Spell-check
vim.api.nvim_set_keymap('n', '<leader>o', '<cmd>setlocal spell! spelllang=en_au<cr>', options)

-- Keep highlight when indenting
vim.api.nvim_set_keymap('v', '<', '<gv', options)
vim.api.nvim_set_keymap('v', '>', '>gv', options)

vim.api.nvim_set_keymap('n', '<A-1>', '1gt', options)
vim.api.nvim_set_keymap('n', '<A-2>', '2gt', options)
vim.api.nvim_set_keymap('n', '<A-3>', '3gt', options)
vim.api.nvim_set_keymap('n', '<A-4>', '4gt', options)
vim.api.nvim_set_keymap('n', '<A-5>', '5gt', options)
vim.api.nvim_set_keymap('n', '<A-6>', '6gt', options)
vim.api.nvim_set_keymap('n', '<A-7>', '7gt', options)
vim.api.nvim_set_keymap('n', '<A-8>', '8gt', options)
vim.api.nvim_set_keymap('n', '<A-9>', '9gt', options)

vim.api.nvim_set_keymap('n', '<leader>gp', '<cmd>Git push<CR>', options)
vim.api.nvim_set_keymap('n', '<leader>gP', '<cmd>Git pull<CR>', options)
vim.api.nvim_set_keymap('n', '<leader>ga', '<cmd>Git add .<CR>', options)
vim.api.nvim_set_keymap('n', '<leader>gA', '<cmd>Git add<CR>', options)
vim.api.nvim_set_keymap('n', '<leader>gc', '<cmd>Git commit<CR>', options)
vim.api.nvim_set_keymap('n', '<leader>gC', '<cmd>Git commit -a<CR>', options)
