summary refs log tree commit diff
path: root/.vim/after/ftplugin
diff options
context:
space:
mode:
Diffstat (limited to '.vim/after/ftplugin')
-rw-r--r--.vim/after/ftplugin/markdown.lua40
1 files changed, 40 insertions, 0 deletions
diff --git a/.vim/after/ftplugin/markdown.lua b/.vim/after/ftplugin/markdown.lua
new file mode 100644
index 0000000..c0796b8
--- /dev/null
+++ b/.vim/after/ftplugin/markdown.lua
@@ -0,0 +1,40 @@
+local nnoremap = require('astronauta.keymap').nnoremap
+
+vim.opt.foldlevel = 1
+vim.opt.spell = true
+
+vim.fn.matchadd('Conceal', '\\[ \\]', 0, -1, { conceal = '☐' })
+vim.fn.matchadd('Conceal', '\\[x\\]', 0, -1, { conceal = '☑' })
+vim.fn.matchadd('Conceal', '\\[-\\]', 0, -1, { conceal = '☒' })
+vim.fn.matchadd('Conceal', '\\[\\]', 0, -1, { conceal = '🞕' })
+
+nnoremap {
+  '<Plug>Markdown_OpenUrlUnderCursor',
+  function() require('misc').open_under_cursor('url-launcher') end,
+}
+
+nnoremap { '<leader>zn', function() require('zk').new() end }
+nnoremap { '<leader>zi', function() require('zk').index() end }
+vim.cmd [[ command! -nargs=* ZettelkastenNew lua require('zk').new(nil, <f-args>) ]]
+
+-- markdown list folding
+local function calc_lvl(line)
+  local i, k = string.find(line, "^[ ]*[*-]")
+  if i and k then return ((k-i) / vim.fn.shiftwidth()) + 1 end
+  return 0
+end
+function _G.markdown_lst_foldexpr(lnum)
+  local lines = vim.api.nvim_buf_get_lines(0, lnum-1, lnum+1, false)
+  if not #lines == 2 then
+    return '='
+  end
+  local lvl_c = calc_lvl(lines[1])
+  local lvl_n = calc_lvl(lines[2])
+  if lvl_c > 0 then
+    if lvl_c < lvl_n then return '>'..lvl_c end -- starts
+    if lvl_c > lvl_n then return '<'..lvl_c end -- ends
+  end
+  return '='
+end
+vim.opt.foldlevel = 0
+vim.opt.foldexpr = 'v:lua.markdown_lst_foldexpr(v:lnum)'