From 96bce39ddb11c5d17cbe33d2f65dd231287df028 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Wed, 12 Oct 2022 17:06:27 +0200 Subject: vim: make 'o' smart inside markdown documents --- .vim/after/ftplugin/markdown.lua | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to '.vim/after/ftplugin') diff --git a/.vim/after/ftplugin/markdown.lua b/.vim/after/ftplugin/markdown.lua index d07e131..49dbcee 100644 --- a/.vim/after/ftplugin/markdown.lua +++ b/.vim/after/ftplugin/markdown.lua @@ -1,5 +1,6 @@ require('spell') -vim.opt.foldlevel = 1 +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 = '☑ ' }) @@ -27,8 +28,7 @@ local function toggle_checkbox() vim.api.nvim_set_current_line(ln) end vim.keymap.set('n', '', toggle_checkbox, {desc='toggle checkbox'}) -vim.keymap.set('n', '', toggle_checkbox, {desc='toggle checkbox'}) -vim.keymap.set('i', '', toggle_checkbox, {desc='toggle checkbox'}) +vim.keymap.set('i', '', toggle_checkbox, {desc='toggle checkbox'}) -- vim.keymap.set('n', 'zn', function() require('zk').new() end) -- vim.keymap.set('n', 'zi', function() require('zk').index() end) @@ -37,3 +37,21 @@ vim.keymap.set('i', '', toggle_checkbox, {desc='toggle checkbox'}) vim.keymap.set('n', 'gt', function() require('telescope._extensions.todo-comments').exports.todo {cwd=vim.env.ZK_NOTEBOOK_DIR} end, {desc='show zk todos'}) + +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 + vim.api.nvim_buf_set_lines(0, cursor[1], cursor[1], false, { + vim.treesitter.get_node_text(node:child(0), 0, {}) + }) + vim.api.nvim_feedkeys('jA', 'n', false) + return + end + node = node:parent() + end + + vim.api.nvim_feedkeys('o', 'n', false) +end, {desc='smart-o'}) -- cgit 1.4.1