nvim/.config/nvim/after/ftplugin/markdown.lua

-- nvim/.config/nvim/after/ftplugin/markdown.lua

vim.opt_local.wrap        = true
vim.opt_local.linebreak   = true
vim.opt_local.breakindent = true
vim.opt_local.spell       = true
vim.opt_local.spelllang   = { "en_us" }
vim.opt_local.conceallevel = 2
vim.opt_local.textwidth    = 0

-- j/k move by visual line when wrapping.
vim.keymap.set("n", "j", "gj", { buffer = 0 })
vim.keymap.set("n", "k", "gk", { buffer = 0 })

-- Quick checkbox toggle.
vim.keymap.set("n", "<localleader>x", function()
  local line = vim.api.nvim_get_current_line()
  if line:find("%[ %]") then
    line = line:gsub("%[ %]", "[x]", 1)
  elseif line:find("%[x%]") then
    line = line:gsub("%[x%]", "[ ]", 1)
  end
  vim.api.nvim_set_current_line(line)
end, { buffer = 0, desc = "toggle checkbox" })

vim.opt_local.formatoptions:remove({ "c", "r", "o" })