require('internal.spell') vim.opt_local.foldenable = false vim.opt_local.foldlevel = 1 vim.fn.matchadd('Conceal', '- \\[ \\]\\&- \\zs\\[ ', 0, -1, { conceal = '☐ ' }) -- vim.fn.matchadd('Conceal', '\\[x\\]', 0, -1, { conceal = '☑ ' }) -- vim.fn.matchadd('Conceal', '\\[-\\]', 0, -1, { conceal = '☒ ' }) vim.fn.matchadd('Conceal', '- \\[x\\]\\&- \\zs\\[x', 0, -1, { conceal = '🞕 ' }) vim.fn.matchadd('Conceal', '- \\[[ x]\\zs\\]', 0, -1, { conceal = ' ' }) vim.keymap.set('n', 'Markdown_OpenUrlUnderCursor', function() require('internal.misc').open_under_cursor('url-launcher') end) vim.keymap.set( 'n', 'l', require('internal.misc').link_preview, { desc = 'link preview' } ) local function toggle_checkbox() local ln, n = vim.api.nvim_get_current_line(), 0 ln, n = string.gsub(ln, '%[ %]', '[x]', 1) if n > 0 then goto set_line end ln, n = string.gsub(ln, '%[x%]', '[ ]', 1) if n > 0 then goto set_line end ln, n = string.gsub(ln, 'TODO', 'DONE', 1) if n > 0 then goto set_line end ln, n = string.gsub(ln, 'DONE', 'TODO', 1) if n > 0 then goto set_line end ::set_line:: vim.api.nvim_set_current_line(ln) end vim.keymap.set('n', '', toggle_checkbox, { desc = 'toggle checkbox', buffer = true }) vim.keymap.set('i', '', toggle_checkbox, { desc = 'toggle checkbox', buffer = true }) -- vim.keymap.set('n', 'zn', function() require('zk').new() end, {buffer=true}) -- vim.keymap.set('n', 'zi', function() require('zk').index() end, {buffer=true}) -- vim.cmd [[ command! -nargs=* ZettelkastenNew lua require('zk').new(nil, ) ]] vim.keymap.set('n', 'gt', function() require('telescope._extensions.todo-comments').exports.todo({ cwd = vim.env.ZK_NOTEBOOK_DIR }) end, { desc = 'show zk todos', buffer = true }) vim.keymap.set('n', 'o', function() local cursor = vim.api.nvim_win_get_cursor(0) -- need to decrement the row number here, to account for 0 indexing local node = vim.treesitter.get_node_at_pos(0, cursor[1] - 1, cursor[2], {}) while node do if node:type() == 'list_item' then local ln = vim.treesitter.get_node_text(node:child(0), 0, {}) local ln_start = string.match(ln, '^(%d+)%.') if ln_start ~= nil then ln = ln:gsub(ln_start, tonumber(ln_start) + 1) end vim.api.nvim_buf_set_lines(0, cursor[1], cursor[1], false, { ln }) vim.api.nvim_feedkeys('jA', 'n', false) return end node = node:parent() end vim.api.nvim_feedkeys('o', 'n', false) end, { desc = 'smart-o', buffer = true })