diff options
| author | Robert Günzler <r@gnzler.io> | 2022-10-12 17:06:27 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2022-10-12 17:08:34 +0200 |
| commit | 96bce39ddb11c5d17cbe33d2f65dd231287df028 (patch) | |
| tree | 6872f877e7ab3bab2d754796ba9baee6f0429c9d /.vim/after/ftplugin/markdown.lua | |
| parent | 18db5a9fef2472293c08b3750fbdfcd49973c055 (diff) | |
vim: make 'o' smart inside markdown documents
Diffstat (limited to '.vim/after/ftplugin/markdown.lua')
| -rw-r--r-- | .vim/after/ftplugin/markdown.lua | 24 |
1 files changed, 21 insertions, 3 deletions
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', '<space><space>', toggle_checkbox, {desc='toggle checkbox'}) -vim.keymap.set('n', '<tab><tab>', toggle_checkbox, {desc='toggle checkbox'}) -vim.keymap.set('i', '<c-tab>', toggle_checkbox, {desc='toggle checkbox'}) +vim.keymap.set('i', '<c-space>', toggle_checkbox, {desc='toggle checkbox'}) -- vim.keymap.set('n', '<leader>zn', function() require('zk').new() end) -- vim.keymap.set('n', '<leader>zi', function() require('zk').index() end) @@ -37,3 +37,21 @@ vim.keymap.set('i', '<c-tab>', 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'}) |