diff --git a/after/syntax/markdown.vim b/after/syntax/markdown.vim new file mode 100644 index 0000000..7cf39cf --- /dev/null +++ b/after/syntax/markdown.vim @@ -0,0 +1,6 @@ +" markdownWikiLink is a new region +syn region markdownWikiLink matchgroup=markdownLinkDelimiter start="\[\[" end="\]\]" contains=markdownUrl keepend oneline concealends +" markdownLinkText is copied from runtime files with 'concealends' appended +syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\%(\_[^][]\|\[\_[^][]*\]\)*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart concealends +" markdownLink is copied from runtime files with 'conceal' appended +syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained conceal diff --git a/ftplugin/markdown.lua b/ftplugin/markdown.lua new file mode 100644 index 0000000..d827759 --- /dev/null +++ b/ftplugin/markdown.lua @@ -0,0 +1,28 @@ +-- Add the key mappings only for Markdown files in a zk notebook. +if require('zk.util').notebook_root(vim.fn.expand('%:p')) ~= nil then + local function map(...) vim.api.nvim_buf_set_keymap(0, ...) end + local opts = { noremap = true, silent = false } + + -- Create a new note after asking for its title. + -- This overrides the global `zn` mapping to create the note in the same directory as the current buffer. + vim.keymap.set('n', 'zn', "ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }", + { noremap = true, silent = false, desc = 'Create a new note' }) + -- Create a new note in the same directory as the current buffer, using the current selection for title. + vim.keymap.set('v', 'znt', ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }", + { noremap = true, silent = false, desc = 'Create a new note' }) + -- Create a new note in the same directory as the current buffer, using the current selection for note content and asking for its title. + map('v', 'znc', + ":'<,'>ZkNewFromContentSelection { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }", opts) + + -- Open notes linking to the current buffer. + map('n', 'zb', 'ZkBacklinks', opts) + -- Alternative for backlinks using pure LSP and showing the source context. + --map('n', 'zb', 'lua vim.lsp.buf.references()', opts) + -- Open notes linked by the current buffer. + map('n', 'zl', 'ZkLinks', opts) + + -- Preview a linked note. + map('n', 'K', 'lua vim.lsp.buf.hover()', opts) + -- Open the code actions for a visual selection. + map('v', 'za', ":'<,'>lua vim.lsp.buf.range_code_action()", opts) +end diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua index 06e5765..2169831 100644 --- a/lua/plugins/treesitter.lua +++ b/lua/plugins/treesitter.lua @@ -7,7 +7,7 @@ return { ensure_installed = 'all', highlight = { enable = true, - additional_vim_regex_highlighting = false + additional_vim_regex_highlighting = {'markdown'} }, rainbow = { enable = true, diff --git a/lua/plugins/zk.lua b/lua/plugins/zk.lua new file mode 100644 index 0000000..dc225f1 --- /dev/null +++ b/lua/plugins/zk.lua @@ -0,0 +1,11 @@ +return { + 'mickael-menu/zk-nvim', + config = function() + require('zk').setup({ + picker = 'telescope', + config = { + on_attach = require('plugins.lspconfig').on_attach + } + }) + end +}