aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md80
-rw-r--r--doc/muwiki.txt110
-rw-r--r--lua/muwiki/init.lua4
3 files changed, 127 insertions, 67 deletions
diff --git a/README.md b/README.md
index e2d7df1..3e10359 100644
--- a/README.md
+++ b/README.md
@@ -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