From 49c1e9d1fc3d6bf8748756a8543d8c1b7287940f Mon Sep 17 00:00:00 2001 From: moxie Date: Sun, 15 Mar 2026 06:41:37 +0200 Subject: refactor: move template/mkdir features to user-configured autocmds - Remove auto-mkdir autocmd from init.lua (now user-configured) - Remove template system entirely (now user-configured) - Rename io.lua -> utils.lua - Inline single-use functions (handle_web_link, handle_file_link, etc.) - Remove security warnings for external files - Remove unused config options: use_template, template, date_fmt - Simplify utils.resolve() without wiki root validation - Update all documentation examples BREAKING CHANGE: Users must now add their own autocmds for: - Auto-creating directories on save (BufWritePre) - Applying templates to new files (BufNewFile) See README.md for updated configuration examples. --- doc/muwiki.txt | 134 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 69 insertions(+), 65 deletions(-) (limited to 'doc/muwiki.txt') diff --git a/doc/muwiki.txt b/doc/muwiki.txt index 4576388..878095d 100644 --- a/doc/muwiki.txt +++ b/doc/muwiki.txt @@ -12,7 +12,6 @@ CONTENTS *muwiki-contents* 5. Keymaps ................................ |muwiki-keymaps| 6. Link Format ............................ |muwiki-link-format| 7. External Handlers ...................... |muwiki-external-handlers| -8. Templates .............................. |muwiki-templates| ============================================================================== 1. INTRODUCTION *muwiki-introduction* @@ -24,7 +23,6 @@ Features:~ - Standard markdown links `[text](url)` - Multiple wiki directories support - External link handlers for custom URL/file opening -- Automatic templates for new pages - Link navigation with custom keymaps Requirements:~ @@ -51,20 +49,39 @@ Using lazy.nvim:~ local muwiki = require('muwiki') muwiki.setup(opts) - local group = vim.api.nvim_create_augroup("MuWikiKeymaps", { clear = true }) + local group = vim.api.nvim_create_augroup("muwiki", { clear = true }) + -- Setup wiki keymaps for markdown files 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 } + callback = function(args) + if not muwiki.wiki_root(args.buf) then return end + + local keymap_opts = { buffer = args.buf, silent = true, nowait = true } vim.keymap.set('n', '', muwiki.open_link, keymap_opts) vim.keymap.set('n', '', muwiki.next_link, keymap_opts) vim.keymap.set('n', '', muwiki.prev_link, keymap_opts) vim.keymap.set('v', '', muwiki.create_link, keymap_opts) end, }) + + -- Auto-create parent directories when saving files in wiki + vim.api.nvim_create_autocmd("BufWritePre", { + group = group, + callback = function(args) + local wiki_root = muwiki.wiki_root(args.buf) + if not wiki_root then return end + + local file = args.file + if not vim.startswith(file, wiki_root) then return end + + local dir = vim.fn.fnamemodify(file, ":h") + if vim.fn.isdirectory(dir) == 0 then + vim.fn.mkdir(dir, "p") + end + end, + }) end, } < @@ -79,15 +96,6 @@ Configuration Options:~ index_file Name of the wiki index file Default: 'index.md' - date_fmt Date format string for templates - Default: '%Y-%m-%d' - - use_template Enable automatic templates for new pages - Default: false - - template Template content with placeholders - See |muwiki-templates| - use_external_handlers Enable external URL/file handlers Default: false @@ -101,15 +109,6 @@ Configuration Options:~ to force editor opening. Default: { 'md', 'txt' } - create_missing_dirs Automatically create missing parent directories - when opening or creating wiki files. - Values: - false - Don't create directories (default) - 'notify' - Create and show notification - 'prompt' - Ask before creating - Directories are only created within wiki root. - Default: false - Example:~ >lua { @@ -124,15 +123,6 @@ Example:~ { 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 = { @@ -168,14 +158,16 @@ Example:~ local muwiki = require('muwiki') muwiki.setup(opts) - local group = vim.api.nvim_create_augroup("MuWikiKeymaps", { clear = true }) + local group = vim.api.nvim_create_augroup("muwiki", { clear = true }) + -- Setup wiki keymaps for markdown files 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 } + callback = function(args) + if not muwiki.wiki_root(args.buf) then return end + + local keymap_opts = { buffer = args.buf, silent = true, nowait = true } vim.keymap.set('n', '', muwiki.open_link, keymap_opts) vim.keymap.set('n', '', muwiki.next_link, keymap_opts) vim.keymap.set('n', '', muwiki.prev_link, keymap_opts) @@ -183,6 +175,23 @@ Example:~ vim.keymap.set('n', 'oo', muwiki.open_link_with, keymap_opts) end, }) + + -- Auto-create parent directories when saving files in wiki + vim.api.nvim_create_autocmd("BufWritePre", { + group = group, + callback = function(args) + local wiki_root = muwiki.wiki_root(args.buf) + if not wiki_root then return end + + local file = args.file + if not vim.startswith(file, wiki_root) then return end + + local dir = vim.fn.fnamemodify(file, ":h") + if vim.fn.isdirectory(dir) == 0 then + vim.fn.mkdir(dir, "p") + end + end, + }) end, } < @@ -277,14 +286,16 @@ Configure keymaps using an autocmd to ensure they only apply within wiki directories: >lua local muwiki = require('muwiki') - local group = vim.api.nvim_create_augroup("MuWikiKeymaps", { clear = true }) + local group = vim.api.nvim_create_augroup("muwiki", { clear = true }) + -- Setup wiki keymaps for markdown files vim.api.nvim_create_autocmd("FileType", { group = group, pattern = "markdown", - callback = function(ev) - if not muwiki.wiki_root(ev.buf) then return end - local opts = { buffer = ev.buf, silent = true, nowait = true } + callback = function(args) + if not muwiki.wiki_root(args.buf) then return end + + local opts = { buffer = args.buf, silent = true, nowait = true } vim.keymap.set('n', '', muwiki.open_link, opts) vim.keymap.set('n', '', muwiki.next_link, opts) vim.keymap.set('n', '', muwiki.prev_link, opts) @@ -292,6 +303,23 @@ directories: >lua vim.keymap.set('n', 'oo', muwiki.open_link_with, opts) end, }) + + -- Auto-create parent directories when saving files in wiki + vim.api.nvim_create_autocmd("BufWritePre", { + group = group, + callback = function(args) + local wiki_root = muwiki.wiki_root(args.buf) + if not wiki_root then return end + + local file = args.file + if not vim.startswith(file, wiki_root) then return end + + local dir = vim.fn.fnamemodify(file, ":h") + if vim.fn.isdirectory(dir) == 0 then + vim.fn.mkdir(dir, "p") + end + end, + }) < Note: Actions check if the buffer is within a configured wiki directory and notify the user if not. @@ -409,30 +437,6 @@ Example: Open PNG files in Neovim (as text/hex) instead of external viewer:~ text_extensions = { 'md', 'txt', 'png' } < ============================================================================== -8. TEMPLATES *muwiki-templates* - -Automatic templates can be applied when creating new wiki pages. - -Enable templates:~ ->lua - require("muwiki").setup({ - use_template = true, - }) -< -Template Placeholders:~ - - ${title} Page title (derived from filename) - ${date} Current date (formatted with `date_fmt`) - -Default Template:~ ->lua - template = [[ ---- -title: ${title} -date: ${date} ---- -]] -< ============================================================================== HEALTH CHECKING *muwiki-health* -- cgit v1.2.3