diff options
| author | moxie <moxie@3kgcat.fi> | 2026-03-14 07:15:24 +0200 |
|---|---|---|
| committer | moxie <moxie@3kgcat.fi> | 2026-03-14 07:16:48 +0200 |
| commit | b8a007dc84e73096b180e65c27a69b42bedec78b (patch) | |
| tree | ae83bfc9e5027ae5fb0453d35cea1ba3a958509b | |
| parent | 3461be4d2d880293c92bc7b4119ba53289ef03cc (diff) | |
chore: update readme/docs
| -rw-r--r-- | README.md | 80 | ||||
| -rw-r--r-- | doc/muwiki.txt | 110 | ||||
| -rw-r--r-- | lua/muwiki/init.lua | 4 |
3 files changed, 127 insertions, 67 deletions
@@ -24,51 +24,37 @@ Using [lazy.nvim](https://github.com/folke/lazy.nvim): ```lua { url = "https://git.3kgcat.fi/muwiki.nvim", + keys = { + { "<leader>ww", function() require("muwiki").open_index("default") end, desc = "Open wiki index" }, + }, opts = { -- Wiki directories (REQUIRED - configure at least one) dirs = {{ name = 'default', path = '~/wiki' }}, }, - -- No defaults, add your own: - keys = { - { "<leader>ww", function() require("muwiki").open_index("default") end, desc = "Open wiki index" }, - { "<CR>", function() require("muwiki").open_link() end, ft = "markdown", desc = "Open wiki link" }, - { "<Tab>", function() require("muwiki").next_link() end, ft = "markdown", desc = "Next wiki link" }, - { "<S-Tab>", function() require("muwiki").prev_link() end, ft = "markdown", desc = "Previous wiki link" }, - { "<CR>", function() require("muwiki").create_link() end, ft = "markdown", mode = "v", desc = "Create wiki link from selection" }, - }, -} -``` - -## Keymaps - -Configure keymaps using lazy.nvim's `keys` option or set them up manually: - -**Keymaps (lazy.nvim):** -```lua -keys = { - { "<CR>", function() require("muwiki").open_link() end, ft = "markdown" }, - { "<Tab>", function() require("muwiki").next_link() end, ft = "markdown" }, - { "<S-Tab>", function() require("muwiki").prev_link() end, ft = "markdown" }, - { "<CR>", function() require("muwiki").create_link() end, ft = "markdown", mode = "v" }, -} -``` -**Manual setup (for other plugin managers):** -```lua --- Set up your own autocmds -vim.api.nvim_create_autocmd('BufEnter', { - pattern = '*.md', - callback = function() - vim.keymap.set('n', '<CR>', require('muwiki').open_link, { buffer = true }) - vim.keymap.set('n', '<Tab>', require('muwiki').next_link, { buffer = true }) - vim.keymap.set('n', '<S-Tab>', require('muwiki').prev_link, { buffer = true }) - vim.keymap.set('v', '<CR>', require('muwiki').create_link, { buffer = true }) + -- autogroup only loads keymaps in wiki files + config = function(_, opts) + local muwiki = require('muwiki') + muwiki.setup(opts) + + local group = vim.api.nvim_create_augroup("MuWikiKeymaps", { clear = true }) + + vim.api.nvim_create_autocmd("FileType", { + group = group, + pattern = "markdown", + callback = function(ev) + if not muwiki.wiki_root(ev.buf) then return end + local keymap_opts = { buffer = ev.buf, silent = true, nowait = true } + vim.keymap.set('n', '<CR>', muwiki.open_link, keymap_opts) + vim.keymap.set('n', '<Tab>', muwiki.next_link, keymap_opts) + vim.keymap.set('n', '<S-Tab>', muwiki.prev_link, keymap_opts) + vim.keymap.set('v', '<CR>', muwiki.create_link, keymap_opts) + end, + }) end, -}) +} ``` -Note: Actions check if the buffer is within a configured wiki directory and do nothing if not. - **Available actions:** - `open_link()` - Open link under cursor @@ -151,26 +137,6 @@ external_handlers = { **Note:** Files with extensions in `text_extensions` will always open in Neovim, bypassing external handlers. -## Automatic Directory Creation - -Automatically create missing parent directories when creating wiki files with nested paths: - -```lua --- Example: [Project notes](projects/myapp/notes.md) --- Will create projects/myapp/ directory if it doesn't exist - -create_missing_dirs = 'notify', -- or 'silent', 'prompt', or false (default) -``` - -**Options:** - -- `false` - Don't create directories (default) -- `true` or `'notify'` - Create directories and show notification -- `'silent'` - Create directories without notification -- `'prompt'` - Ask before creating directories - -**Security:** Directories are only created within your configured wiki root directories. - ## Recommended Plugins These plugins work well with muwiki.nvim: diff --git a/doc/muwiki.txt b/doc/muwiki.txt index 562ff5c..f6fd62a 100644 --- a/doc/muwiki.txt +++ b/doc/muwiki.txt @@ -38,18 +38,34 @@ Using lazy.nvim:~ >lua { url = "https://git.3kgcat.fi/muwiki.nvim", + keys = { + { "<leader>ww", function() require("muwiki").open_index("default") end, desc = "Open wiki index" }, + }, opts = { -- Wiki directories (REQUIRED - configure at least one) dirs = {{ name = 'default', path = '~/wiki' }}, }, - -- No defaults, add your own: - keys = { - { "<leader>ww", function() require("muwiki").open_index("default") end, desc = "Open wiki index" }, - { "<CR>", function() require("muwiki").open_link() end, ft = "markdown", desc = "Open wiki link" }, - { "<Tab>", function() require("muwiki").next_link() end, ft = "markdown", desc = "Next wiki link" }, - { "<S-Tab>", function() require("muwiki").prev_link() end, ft = "markdown", desc = "Previous wiki link" }, - { "<CR>", function() require("muwiki").create_link() end, ft = "markdown", mode = "v", desc = "Create wiki link from selection" }, - }, + + -- autogroup only loads keymaps in wiki files + config = function(_, opts) + local muwiki = require('muwiki') + muwiki.setup(opts) + + local group = vim.api.nvim_create_augroup("MuWikiKeymaps", { clear = true }) + + vim.api.nvim_create_autocmd("FileType", { + group = group, + pattern = "markdown", + callback = function(ev) + if not muwiki.wiki_root(ev.buf) then return end + local keymap_opts = { buffer = ev.buf, silent = true, nowait = true } + vim.keymap.set('n', '<CR>', muwiki.open_link, keymap_opts) + vim.keymap.set('n', '<Tab>', muwiki.next_link, keymap_opts) + vim.keymap.set('n', '<S-Tab>', muwiki.prev_link, keymap_opts) + vim.keymap.set('v', '<CR>', muwiki.create_link, keymap_opts) + end, + }) + end, } < ============================================================================== @@ -89,13 +105,87 @@ Configuration Options:~ when opening or creating wiki files. Values: false - Don't create directories (default) - true - Same as 'notify' - 'silent' - Create without notification 'notify' - Create and show notification 'prompt' - Ask before creating Directories are only created within wiki root. Default: false +Example:~ + + { + url = "https://git.3kgcat.fi/muwiki.nvim/", + keys = { + { "<leader>ww", function() require("muwiki").open_index("default") end, desc = "Open wiki index" }, + { "<leader>we", function() require("muwiki").open_index("test") end, desc = "Open test wiki index" }, + }, + opts = { + dirs = { + { name = 'default', path = '~/wiki' }, + { name = 'test', path = '~/wiki_test' }, + }, + index_file = 'index.md', + create_missing_dirs = 'notify', + date_fmt = '%Y-%m-%d', + use_template = true, + template = [[ + --- + title: ${title} + date: ${date} + --- + ]], + text_extensions = { 'md', 'txt' }, + use_external_handlers = true, + external_handlers = { + { + name = 'mpv', + cmd = 'mpv', + pattern = { + '%.mp4$', + '%.mkv$', + '%.avi$', + '%.webm$', + 'youtube%.com', + 'youtu%.be', + }, + }, + { + name = 'Copy URL', + cmd = function(url) + vim.system({ 'wl-copy', url }, { detach = true }) + vim.notify('URL copied to clipboard', vim.log.levels.INFO) + end, + pattern = '.*', + }, + { + name = 'xdg-open', + cmd = 'xdg-open', + pattern = '.*', + }, + }, + }, + + config = function(_, opts) + local muwiki = require('muwiki') + muwiki.setup(opts) + + local group = vim.api.nvim_create_augroup("MuWikiKeymaps", { clear = true }) + + vim.api.nvim_create_autocmd("FileType", { + group = group, + pattern = "markdown", + callback = function(ev) + if not muwiki.wiki_root(ev.buf) then return end + local keymap_opts = { buffer = ev.buf, silent = true, nowait = true } + vim.keymap.set('n', '<CR>', muwiki.open_link, keymap_opts) + vim.keymap.set('n', '<Tab>', muwiki.next_link, keymap_opts) + vim.keymap.set('n', '<S-Tab>', muwiki.prev_link, keymap_opts) + vim.keymap.set('v', '<CR>', muwiki.create_link, keymap_opts) + vim.keymap.set('n', '<leader>oo', muwiki.open_link_with, keymap_opts) + end, + }) + end, + } + ============================================================================== 4. COMMANDS AND API *muwiki-commands* diff --git a/lua/muwiki/init.lua b/lua/muwiki/init.lua index a898c88..7f0404b 100644 --- a/lua/muwiki/init.lua +++ b/lua/muwiki/init.lua @@ -45,4 +45,8 @@ function M.open_index(name) require('muwiki.files').open_index(name) end +function M.wiki_root(bufnr) + return config.wiki_root(bufnr) +end + return M |
