require("zk").setup({ -- can be "telescope", "fzf" or "select" (`vim.ui.select`) -- it's recommended to use "telescope" or "fzf" picker = "telescope", lsp = { -- `config` is passed to `vim.lsp.start_client(config)` config = { cmd = {"zk", "lsp"}, name = "zk", root_dir = vim.loop.cwd() -- on_attach = ... -- etc, see `:h vim.lsp.start_client()` }, -- automatically attach buffers in a zk notebook that match the given filetypes auto_attach = {enabled = true, filetypes = {"markdown"}} } }) -- mappings -- 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 map = vim.api.nvim_set_keymap local opts = {noremap = true, silent = false} -- Open the link under the caret. map("n", "", "lua vim.lsp.buf.definition()", opts) -- 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. map("n", "zn", "ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }", opts) -- Create a new note in the same directory as the current buffer, using the current selection for title. map("v", "znt", ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }", opts) -- 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) -- Open the code actions for a visual selection. map("v", "za", ":'<,'>lua vim.lsp.buf.range_code_action()", opts) end