-- [[ Autocommands ]]
--  See `:help autocmd`
--  See `:help lua-guide-autocommands`

-- These should be self-explanatory
vim.api.nvim_create_user_command('Cd', 'cd %:h', { desc = 'Change directory to the current file' })
vim.api.nvim_create_user_command('Py', '!python %', { desc = 'Execute python file' })
vim.api.nvim_create_user_command('Trim', 'lua MiniTrailspace.trim()', { desc = 'Trim trailing whitespace' })

-- Instantly move help window to the right
-- This is almost certainly a hacky way to do this)
vim.api.nvim_create_autocmd('FileType', {
  pattern = { 'help' },
  command = 'wincmd L',
})

-- Highlight when yanking (copying) text
--  Try it with `yap` in normal mode
--  See `:help vim.highlight.on_yank()`
vim.api.nvim_create_autocmd('TextYankPost', {
  desc = 'Highlight when yanking (copying) text',
  group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
  callback = function()
    vim.highlight.on_yank()
  end,
})

vim.api.nvim_create_user_command('CDToGitRoot', function()
  local handle = io.popen 'git rev-parse --show-toplevel 2>/dev/null'
  local git_root

  if handle then
    git_root = handle:read('*a'):gsub('\n', '')
    handle:close()
  end

  if git_root == '' then
    print 'Not in a Git repository'
  else
    vim.cmd('cd ' .. git_root)
    print('Changed directory to Git root: ' .. git_root)
  end
end, { desc = 'Change directory to the current Git repository root' })

vim.api.nvim_create_user_command('WordCount', function()
  local buf = vim.api.nvim_get_current_buf()
  local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
  local words = 0
  for _, line in ipairs(lines) do
    for _ in line:gmatch '%S+' do
      words = words + 1
    end
  end
  print('Word count: ' .. words)
end, { desc = 'Count words in current buffer' })

-- vim: ts=2 sts=2 sw=2 et