From 15ef62d1d2d86e459eb06fe5e1fb27e442a843cb Mon Sep 17 00:00:00 2001 From: Jason Paris Date: Sun, 6 Jul 2025 17:34:54 -0400 Subject: [PATCH] docs: comprehensive README and documentation overhaul - Redesign README with modern structure, badges, and clear navigation - Add Quick Start section for immediate productivity - Reorganize content flow from basic to advanced usage - Update all default paths from ~/repos/notes to ~/notes - Add practical examples and real-world templates - Improve keybinding reference with grouped categories - Enhance troubleshooting section with common solutions - Remove Unicode/emoji characters from Vim help documentation - Convert markdown tables to proper Vim help formatting - Update LICENSE copyright to Jason Paris - Remove marksman LSP suggestion to simplify requirements - Add comprehensive workspace documentation with examples --- LICENSE | 2 +- README.md | 537 ++++++++++++++++++++---------- doc/markdown-notes.txt | 721 +++++++++++++++++++++-------------------- doc/tags | 57 ++-- 4 files changed, 760 insertions(+), 557 deletions(-) diff --git a/LICENSE b/LICENSE index 6589501..eeb0134 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 paris3200 +Copyright (c) 2025 Jason Paris Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index df2a22d..5b697fc 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,82 @@ -# markdown-notes.nvim +# 📝 markdown-notes.nvim -A simple, configurable markdown note-taking plugin for Neovim with support for daily notes, templates, wiki-style linking, and powerful search capabilities. +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Neovim](https://img.shields.io/badge/Neovim-0.8+-green.svg)](https://neovim.io/) -## Features +**A powerful, lightweight markdown note-taking plugin for Neovim that transforms your editor into a comprehensive knowledge management system.** -- **Daily Notes**: Quick creation and navigation of daily notes with automatic templating -- **Template-based Note Creation**: Create notes with default templates or choose from available templates -- **Templates**: Flexible template system with variable substitution (`{{date}}`, `{{time}}`, `{{title}}`, etc.) -- **Wiki-style Links**: Create and follow `[[note-name]]` links between notes -- **Note Renaming**: Rename notes and automatically update all references across your vault -- **Powerful Search**: Find notes by filename or content, search frontmatter tags with syntax highlighting -- **Backlinks**: Discover which notes reference the current note -- **Workspaces**: Support for multiple independent note vaults with manual switching -- **Configurable**: Customize paths, keybindings, and behavior +Perfect for developers, researchers, and knowledge workers who want to seamlessly integrate note-taking into their Neovim workflow. -## Requirements +## 📋 Table of Contents -- Neovim >= 0.8.0 -- [fzf-lua](https://github.com/ibhagwan/fzf-lua) for fuzzy finding -- [marksman](https://github.com/artempyanykh/marksman) LSP (optional, for enhanced link completion) +- [✨ Quick Start](#-quick-start) +- [🚀 Features](#-features) +- [đŸ“Ļ Installation](#-installation) +- [âš™ī¸ Basic Configuration](#ī¸-basic-configuration) +- [📖 Usage Guide](#-usage-guide) +- [🔧 Advanced Configuration](#-advanced-configuration) +- [📄 Template System](#-template-system) +- [đŸ› ī¸ Troubleshooting](#ī¸-troubleshooting) +- [🤝 Contributing](#-contributing) +- [📜 License](#-license) -## Installation +## ✨ Quick Start -### Using [lazy.nvim](https://github.com/folke/lazy.nvim) +**1. Install with your favorite plugin manager:** ```lua +-- lazy.nvim { "paris3200/markdown-notes.nvim", - dependencies = { - "ibhagwan/fzf-lua", - }, + dependencies = { "ibhagwan/fzf-lua" }, + config = true, +} +``` + +**2. Start taking notes immediately:** +- `nd` - Create today's daily note +- `nn` - Create a new note +- `nf` - Find existing notes +- `ns` - Search note contents + +**3. Create your first template** (optional): +```bash +mkdir -p ~/notes/templates +echo "# {{title}}\n\nCreated: {{date}}" > ~/notes/templates/basic.md +``` + +That's it! You're ready to start building your knowledge base. + +## 🚀 Features + +### Core Features +- **📅 Daily Notes** - Quick creation and navigation with automatic templating +- **📝 Template System** - Flexible templates with variable substitution (`{{date}}`, `{{time}}`, `{{title}}`, etc.) +- **🔗 Wiki-style Links** - Create and follow `[[note-name]]` links between notes +- **🔄 Smart Renaming** - Rename notes and automatically update all references +- **🔍 Powerful Search** - Find notes by filename or content with syntax highlighting +- **â†Šī¸ Backlinks** - Discover which notes reference the current note + +### Advanced Features +- **đŸĸ Multi-Workspace Support** - Manage multiple independent note vaults +- **đŸˇī¸ Tag Management** - Search and organize by frontmatter tags +- **⚡ High Performance** - Built for speed with fuzzy finding via fzf-lua +- **🎨 Highly Configurable** - Customize paths, keybindings, and behavior + +## đŸ“Ļ Installation + +### Requirements +- **Neovim >= 0.8.0** +- **[fzf-lua](https://github.com/ibhagwan/fzf-lua)** - Required for fuzzy finding + +### Plugin Managers + +#### [lazy.nvim](https://github.com/folke/lazy.nvim) (Recommended) + +```lua +{ + "paris3200/markdown-notes.nvim", + dependencies = { "ibhagwan/fzf-lua" }, config = function() require("markdown-notes").setup({ -- your configuration here @@ -38,7 +85,7 @@ A simple, configurable markdown note-taking plugin for Neovim with support for d } ``` -### Using [packer.nvim](https://github.com/wbthomason/packer.nvim) +#### [packer.nvim](https://github.com/wbthomason/packer.nvim) ```lua use { @@ -50,18 +97,147 @@ use { } ``` -## Configuration +#### [vim-plug](https://github.com/junegunn/vim-plug) -Default configuration: +```vim +Plug 'ibhagwan/fzf-lua' +Plug 'paris3200/markdown-notes.nvim' + +" In your init.lua or after/plugin/markdown-notes.lua +lua require("markdown-notes").setup() +``` + +## âš™ī¸ Basic Configuration + +The plugin works out of the box with sensible defaults. Here's a minimal setup: ```lua require("markdown-notes").setup({ - vault_path = "~/repos/notes", - templates_path = "~/repos/notes/sys/templates", - dailies_path = "~/repos/notes/personal/dailies/2025", - weekly_path = "~/repos/notes/personal/weekly", + vault_path = "~/notes", -- Where your notes live + templates_path = "~/notes/templates", -- Where your templates live + dailies_path = "~/notes/daily", -- Where daily notes go +}) +``` + +### Key Mappings (Default) + +All keybindings use `n` as the prefix for easy discovery: + +| Keybinding | Action | Description | +|------------|--------|-------------| +| `nd` | Daily note (today) | Create/open today's daily note | +| `ny` | Daily note (yesterday) | Open yesterday's daily note | +| `nt` | Daily note (tomorrow) | Open tomorrow's daily note | +| `nn` | New note | Create a new note | +| `nc` | New note from template | Create note with template selection | +| `nf` | Find notes | Search and open existing notes | +| `ns` | Search notes | Search within note contents | +| `nl` | Insert link | Search for note and insert wiki-link | +| `np` | Insert template | Insert template at cursor | +| `ng` | Search tags | Find notes by frontmatter tags | +| `nb` | Show backlinks | Show notes linking to current note | +| `nr` | Rename note | Rename note and update all references | +| `nw` | Pick workspace | Switch between workspaces | +| `gf` | Follow link | Follow link under cursor | + +> **💡 Tip:** All keybindings can be customized in your configuration. + +## 📖 Usage Guide + +### Getting Started with Daily Notes + +Daily notes are the heart of many note-taking workflows. Start your day by creating today's note: + +``` +nd → Creates/opens today's daily note (e.g., 2025-01-15.md) +``` + +If you have a `Daily.md` template, it will be automatically applied. Otherwise, a basic note with frontmatter is created. + +### Creating and Managing Notes + +#### Basic Note Creation +``` +nn → Create a new note with your default template +nc → Choose from available templates +``` + +#### Finding and Searching +``` +nf → Fuzzy find notes by filename (with live preview) +ns → Search inside note contents (with syntax highlighting) +ng → Search by frontmatter tags +``` + +### Working with Links + +#### Creating Links Between Notes +``` +nl → Search for a note and insert [[wiki-link]] + Press Ctrl+L to just insert the link + Press Enter to open the note +``` + +#### Following and Managing Links +``` +gf → Follow the link under cursor +nb → Show all notes that link to current note (backlinks) +nr → Rename current note and update all references +``` + +### Using Templates + +Templates make your notes consistent and save time: + +``` +np → Insert template at cursor position +``` + +**Example template** (`~/notes/templates/meeting.md`): +```markdown +--- +title: {{title}} +date: {{date}} +tags: [meetings] +--- + +# {{title}} + +**Date:** {{datetime}} +**Attendees:** + +## Agenda + +## Notes + +## Action Items +- [ ] +``` + +### Command Reference + +| Command | Description | +|---------|-------------| +| `:MarkdownNotesRename [name]` | Rename current note and update references | +| `:MarkdownNotesWorkspaceStatus` | Show current workspace | +| `:MarkdownNotesWorkspacePick` | Switch workspace with fuzzy finder | +| `:MarkdownNotesWorkspaceSwitch ` | Switch to specific workspace | + +## 🔧 Advanced Configuration + +### Custom Configuration Options + +```lua +require("markdown-notes").setup({ + -- Core paths + vault_path = "~/notes", + templates_path = "~/notes/templates", + dailies_path = "~/notes/daily", + weekly_path = "~/notes/weekly", notes_subdir = "notes", - default_template = nil, -- Optional: default template for new notes (e.g., "note") + + -- Template settings + default_template = "basic", -- Auto-apply this template to new notes -- Custom template variables template_vars = { @@ -71,9 +247,12 @@ require("markdown-notes").setup({ title = function() return vim.fn.expand("%:t:r") end, yesterday = function() return os.date("%Y-%m-%d", os.time() - 86400) end, tomorrow = function() return os.date("%Y-%m-%d", os.time() + 86400) end, + -- Add your own custom variables + author = function() return "Your Name" end, + project = function() return vim.fn.getcwd():match("([^/]+)$") end, }, - -- Key mappings + -- Customize keybindings mappings = { daily_note_today = "nd", daily_note_yesterday = "ny", @@ -92,212 +271,220 @@ require("markdown-notes").setup({ }) ``` -## Workspaces +### Multi-Workspace Configuration -Workspaces allow you to manage multiple independent note vaults simultaneously. Each workspace has its own configuration for paths, templates, and settings. You can set a default workspace and manually switch between them as needed. +Workspaces allow you to manage multiple independent note vaults simultaneously. Perfect for separating work notes, personal notes, and project-specific documentation. -### Workspace Setup +#### Setting Up Workspaces ```lua --- Basic plugin setup with default workspace +-- Base configuration (becomes your default workspace) require("markdown-notes").setup({ vault_path = "~/notes", templates_path = "~/notes/templates", - default_workspace = "personal", -- Optional: specify which workspace to use by default + default_workspace = "personal", -- Optional: specify default }) --- Set up work workspace +-- Work workspace require("markdown-notes").setup_workspace("work", { vault_path = "~/work-notes", templates_path = "~/work-notes/templates", - dailies_path = "~/work-notes/dailies", - notes_subdir = "projects", + dailies_path = "~/work-notes/standups", default_template = "work-note", template_vars = { - -- Custom variables for work notes project = function() return "Current Project" end, + sprint = function() return "Sprint-" .. os.date("%U") end, }, }) --- Set up personal workspace -require("markdown-notes").setup_workspace("personal", { - vault_path = "~/personal-notes", - templates_path = "~/personal-notes/templates", - dailies_path = "~/personal-notes/journal", - notes_subdir = "thoughts", - default_template = "personal-note", +-- Research workspace +require("markdown-notes").setup_workspace("research", { + vault_path = "~/research/papers", + templates_path = "~/research/templates", + dailies_path = "~/research/lab-notes", + default_template = "research-paper", }) ``` -### Workspace Behavior +#### Workspace Workflow -The plugin uses a simple, predictable workspace system: +- **Switch workspaces**: Use `nw` to pick from available workspaces +- **Persistent context**: All commands use the active workspace until you switch +- **Independent settings**: Each workspace has its own paths, templates, and variables -- **Default workspace**: Set via `default_workspace` in config, or first workspace configured becomes default -- **Manual switching**: Use `nw` or commands to switch active workspace -- **Persistent**: All operations use the active workspace until you manually switch +### Directory Structure Example -### Commands +``` +~/notes/ # Main vault +├── templates/ # Your templates +│ ├── Daily.md # Auto-applied to daily notes +│ ├── meeting.md # Meeting template +│ └── project.md # Project template +├── daily/ # Daily notes +│ ├── 2025-01-15.md +│ └── 2025-01-16.md +└── notes/ # Regular notes + ├── project-ideas.md + └── learning-resources.md +``` -**Note Management:** -- `:MarkdownNotesRename [name]` - Rename current note and update all references (prompts if no name provided) +## 📄 Template System -**Workspace Management:** -- `:MarkdownNotesWorkspaceStatus` - Show current workspace for the buffer -- `:MarkdownNotesWorkspacePick` - Pick workspace with fuzzy finder -- `:MarkdownNotesWorkspaceSwitch ` - Switch to a workspace directory +Templates are markdown files with special `{{variable}}` syntax that gets substituted when creating notes. -### Multi-Vault Workflow +### Built-in Template Variables -With workspaces, you can: +| Variable | Output | Example | +|----------|--------|---------| +| `{{date}}` | Current date | `2025-01-15` | +| `{{time}}` | Current time | `14:30` | +| `{{datetime}}` | Date and time | `2025-01-15 14:30` | +| `{{title}}` | File name without extension | `meeting-notes` | +| `{{yesterday}}` | Yesterday's date | `2025-01-14` | +| `{{tomorrow}}` | Tomorrow's date | `2025-01-16` | -1. **Work on multiple projects simultaneously**: Have work notes open in one split and personal notes in another -2. **Context-specific templates**: Use different templates for work vs personal notes -3. **Separate organization**: Each workspace maintains its own directory structure and settings -4. **Seamless switching**: All plugin commands automatically use the correct workspace configuration +### Creating Custom Variables -### Example Multi-Workspace Setup +Add custom variables in your configuration: ```lua --- ~/.config/nvim/lua/config/notes.lua -local notes = require("markdown-notes") - --- Base configuration -notes.setup({ - vault_path = "~/notes", - templates_path = "~/notes/templates", -}) - --- Work workspace -notes.setup_workspace("work", { - vault_path = "~/work/knowledge-base", - templates_path = "~/work/knowledge-base/templates", - dailies_path = "~/work/knowledge-base/daily-standups", - notes_subdir = "projects", - default_template = "work-note", +require("markdown-notes").setup({ template_vars = { - sprint = function() return "Sprint-" .. os.date("%U") end, - standup_date = function() return os.date("%A, %B %d") end, + author = function() return "Your Name" end, + project = function() return vim.fn.getcwd():match("([^/]+)$") end, + week = function() return os.date("Week %U") end, + uuid = function() return vim.fn.system("uuidgen"):gsub("\n", "") end, }, }) +``` --- Research workspace -notes.setup_workspace("research", { - vault_path = "~/research/papers", - templates_path = "~/research/templates", - dailies_path = "~/research/lab-notes", - notes_subdir = "literature", - default_template = "research-paper", - template_vars = { - citation = function() return "[@author" .. os.date("%Y") .. "]" end, - }, -}) +### Example Templates --- Personal workspace -notes.setup_workspace("personal", { - vault_path = "~/personal/journal", - templates_path = "~/personal/templates", - dailies_path = "~/personal/daily", - default_template = "journal-entry", -}) -``` +**Daily Note Template** (`templates/Daily.md`): +```markdown +--- +title: Daily Note - {{date}} +date: {{date}} +tags: [daily] +--- -## Usage +# {{date}} - Daily Notes -### Daily Notes +## đŸŽ¯ Today's Goals +- [ ] -- `nd` - Open today's daily note -- `ny` - Open yesterday's daily note -- `nt` - Open tomorrow's daily note +## 📝 Notes -Daily notes are automatically created with your `Daily.md` template if it exists. +## 🔄 Tomorrow's Prep +- [ ] +``` -### Note Management +**Meeting Template** (`templates/meeting.md`): +```markdown +--- +title: {{title}} +date: {{date}} +tags: [meeting] +attendees: [] +--- -- `nn` - Create a new note (uses default template if configured, otherwise basic frontmatter) -- `nc` - Create a new note from template (choose template interactively) -- `nf` - Find and open existing notes with file preview -- `ns` - Search within note contents with syntax highlighting +# {{title}} -### Links and Navigation +**Date:** {{datetime}} +**Attendees:** -- `nl` - Search for a note and insert a `[[wiki-link]]` - - Press `Enter` to open the selected note - - Press `Ctrl+L` to insert a link to the note -- `gf` - Follow the link under cursor -- `nb` - Show backlinks to the current note with file preview - - Press `Enter` to open the selected note - - Press `Ctrl+L` to insert a link to the note -- `nr` - Rename the current note and update all references - - Prompts for new name and shows confirmation with file count - - Updates all `[[wiki-links]]` and `[[link|display text]]` references - - Handles files in subdirectories and prevents partial matches +## 📋 Agenda -### Templates +## 📝 Discussion Notes -- `np` - Insert a template at cursor position with file preview -- Templates support variable substitution with `{{variable}}` syntax -- Configure `default_template` to automatically apply a template to new notes +## ✅ Action Items +- [ ] -### Tags +## 🔗 Links +``` -- `ng` - Search for tags from frontmatter (YAML tags: [tag1, tag2]) -- `nw` - Pick workspace with fuzzy finder - - Shows tag list with file counts - - Select a tag to view files containing that tag with preview +## đŸ› ī¸ Troubleshooting -## Template Variables +### Common Issues -Available template variables: +#### "fzf-lua not found" Error +**Solution:** Install fzf-lua dependency: +```lua +-- lazy.nvim +dependencies = { "ibhagwan/fzf-lua" } -- `{{date}}` - Current date (YYYY-MM-DD) -- `{{time}}` - Current time (HH:MM) -- `{{datetime}}` - Current date and time -- `{{title}}` - Current file name without extension -- `{{note_title}}` - User-provided title when creating notes (same as `{{title}}` for note creation) -- `{{yesterday}}` - Yesterday's date -- `{{tomorrow}}` - Tomorrow's date +-- packer.nvim +requires = { "ibhagwan/fzf-lua" } +``` -Example template usage: -```markdown ---- -title: {{title}} -date: {{date}} -tags: [] ---- +#### Templates Not Working +**Checklist:** +1. Verify `templates_path` exists and contains `.md` files +2. Check template syntax uses `{{variable}}` (not `{variable}`) +3. Ensure template file permissions are readable -# {{title}} +#### Links Not Following (`gf` not working) +**Solution:** Ensure you're using the correct link format: +- ✅ `[[note-name]]` or `[[note-name.md]]` +- ❌ `[note-name](note-name.md)` (standard markdown links) -Created on {{datetime}} -``` +#### Performance Issues with Large Vaults +**Solutions:** +- Use `.gitignore` to exclude non-note files from searches +- Consider splitting large vaults into multiple workspaces +- Ensure fzf-lua is properly configured -## Directory Structure +### Debug Information +Check your configuration: +```lua +:lua print(vim.inspect(require("markdown-notes").config)) ``` -~/repos/notes/ -├── sys/ -│ └── templates/ -│ ├── Daily.md -│ ├── Meeting.md -│ └── Project.md -├── personal/ -│ └── dailies/ -│ └── 2025/ -│ ├── 2025-01-01.md -│ └── 2025-01-02.md -└── notes/ - ├── project-ideas.md - └── learning-resources.md + +Check current workspace: +``` +:MarkdownNotesWorkspaceStatus +``` + +## 🤝 Contributing + +We welcome contributions! Here's how to get started: + +1. **Fork** the repository +2. **Create** a feature branch (`git checkout -b feature/amazing-feature`) +3. **Make** your changes +4. **Test** your changes (run tests if applicable) +5. **Commit** your changes (`git commit -m 'feat: add amazing feature'`) +6. **Push** to the branch (`git push origin feature/amazing-feature`) +7. **Open** a Pull Request + +### Development Setup + +```bash +# Clone your fork +git clone https://github.com/yourusername/markdown-notes.nvim.git +cd markdown-notes.nvim + +# Run tests (requires plenary.nvim) +nvim --headless -u tests/minimal_init.vim -c "lua require('plenary.test_harness').test_directory('tests')" ``` -## Contributing +### Reporting Issues -1. Fork the repository -2. Create a feature branch -3. Make your changes -4. Add tests if applicable -5. Submit a pull request +- Use GitHub Issues for bug reports and feature requests +- Include your Neovim version and plugin configuration +- Provide steps to reproduce the issue -## License +## 📜 License MIT License - see [LICENSE](LICENSE) file for details. + +--- + +
+ +**Happy note-taking! 📝** + +If you find this plugin useful, consider ⭐ starring the repository! + +
diff --git a/doc/markdown-notes.txt b/doc/markdown-notes.txt index 40188ea..3e7a9a3 100644 --- a/doc/markdown-notes.txt +++ b/doc/markdown-notes.txt @@ -4,54 +4,85 @@ CONTENTS *markdown-notes-contents* 1. Introduction |markdown-notes-introduction| -2. Requirements |markdown-notes-requirements| -3. Installation |markdown-notes-installation| -4. Configuration |markdown-notes-configuration| -5. Workspaces |markdown-notes-workspaces| -6. Usage |markdown-notes-usage| -7. Commands |markdown-notes-commands| -8. Note Naming |markdown-notes-note-naming| -9. Template Variables |markdown-notes-template-vars| -10. Directory Structure |markdown-notes-directory| -11. Link Formats |markdown-notes-link-formats| +2. Quick Start |markdown-notes-quick-start| +3. Requirements |markdown-notes-requirements| +4. Installation |markdown-notes-installation| +5. Basic Configuration |markdown-notes-basic-config| +6. Usage Guide |markdown-notes-usage-guide| +7. Key Mappings |markdown-notes-key-mappings| +8. Advanced Configuration |markdown-notes-advanced-config| +9. Workspaces |markdown-notes-workspaces| +10. Template System |markdown-notes-template-system| +11. Commands |markdown-notes-commands| 12. Troubleshooting |markdown-notes-troubleshooting| -13. API |markdown-notes-api| +13. API Reference |markdown-notes-api| ============================================================================== INTRODUCTION *markdown-notes-introduction* -markdown-notes.nvim is a simple, configurable markdown note-taking plugin for -Neovim with support for daily notes, templates, wiki-style linking, and -powerful search capabilities. - -Features: -- Daily Notes: Quick creation and navigation of daily notes with automatic - templating -- Templates: Flexible template system with variable substitution -- Wiki-style Links: Create and follow `[[note-name]]` links between notes -- Note Renaming: Rename notes and automatically update all references -- Powerful Search: Find notes by filename or content, search tags -- Backlinks: Discover which notes reference the current note -- Workspaces: Support for multiple independent note vaults with manual switching -- Configurable: Customize paths, keybindings, and behavior +markdown-notes.nvim is a powerful, lightweight markdown note-taking plugin +for Neovim that transforms your editor into a comprehensive knowledge +management system. + +Perfect for developers, researchers, and knowledge workers who want to +seamlessly integrate note-taking into their Neovim workflow. + +FEATURES: + +Core Features~ +- Daily Notes - Quick creation and navigation with automatic templating +- Template System - Flexible templates with variable substitution +- Wiki-style Links - Create and follow [[note-name]] links between notes +- Smart Renaming - Rename notes and automatically update all references +- Powerful Search - Find notes by filename or content with syntax highlighting +- Backlinks - Discover which notes reference the current note + +Advanced Features~ +- Multi-Workspace Support - Manage multiple independent note vaults +- Tag Management - Search and organize by frontmatter tags +- High Performance - Built for speed with fuzzy finding via fzf-lua +- Highly Configurable - Customize paths, keybindings, and behavior + +============================================================================== +QUICK START *markdown-notes-quick-start* + +1. Install with your plugin manager: > + -- lazy.nvim + { + "paris3200/markdown-notes.nvim", + dependencies = { "ibhagwan/fzf-lua" }, + config = true, + } +< + +2. Start taking notes immediately: + - `nd` - Create today's daily note + - `nn` - Create a new note + - `nf` - Find existing notes + - `ns` - Search note contents + +3. Create your first template (optional): > + $ mkdir -p ~/notes/templates + $ echo "# {{title}}\n\nCreated: {{date}}" > ~/notes/templates/basic.md +< + +That's it! You're ready to start building your knowledge base. ============================================================================== REQUIREMENTS *markdown-notes-requirements* - Neovim >= 0.8.0 -- fzf-lua (https://github.com/ibhagwan/fzf-lua) for fuzzy finding -- marksman LSP (optional, for enhanced link completion) - (https://github.com/artempyanykh/marksman) +- fzf-lua (https://github.com/ibhagwan/fzf-lua) - Required for fuzzy finding ============================================================================== INSTALLATION *markdown-notes-installation* -Using lazy.nvim: > +Plugin Managers~ + +lazy.nvim (Recommended): > { "paris3200/markdown-notes.nvim", - dependencies = { - "ibhagwan/fzf-lua", - }, + dependencies = { "ibhagwan/fzf-lua" }, config = function() require("markdown-notes").setup({ -- your configuration here @@ -60,7 +91,7 @@ Using lazy.nvim: > } < -Using packer.nvim: > +packer.nvim: > use { "paris3200/markdown-notes.nvim", requires = { "ibhagwan/fzf-lua" }, @@ -70,17 +101,139 @@ Using packer.nvim: > } < +vim-plug: > + Plug 'ibhagwan/fzf-lua' + Plug 'paris3200/markdown-notes.nvim' + + " In your init.lua or after/plugin/markdown-notes.lua + lua require("markdown-notes").setup() +< + ============================================================================== -CONFIGURATION *markdown-notes-configuration* +BASIC CONFIGURATION *markdown-notes-basic-config* -Default configuration: > +The plugin works out of the box with sensible defaults. Here's a minimal +setup: > require("markdown-notes").setup({ - vault_path = "~/repos/notes", - templates_path = "~/repos/notes/sys/templates", - dailies_path = "~/repos/notes/personal/dailies/2025", - weekly_path = "~/repos/notes/personal/weekly", + vault_path = "~/notes", -- Where your notes live + templates_path = "~/notes/templates", -- Where your templates live + dailies_path = "~/notes/daily", -- Where daily notes go + }) +< + +============================================================================== +USAGE GUIDE *markdown-notes-usage-guide* + +Getting Started with Daily Notes~ + *markdown-notes-usage-daily-notes* +Daily notes are the heart of many note-taking workflows. Start your day by +creating today's note: > + nd → Creates/opens today's daily note (e.g., 2025-01-15.md) +< + +If you have a `Daily.md` template, it will be automatically applied. +Otherwise, a basic note with frontmatter is created. + +Creating and Managing Notes~ + *markdown-notes-usage-note-management* +Basic Note Creation: > + nn → Create a new note with your default template + nc → Choose from available templates +< + +Finding and Searching: > + nf → Fuzzy find notes by filename (with live preview) + ns → Search inside note contents (with syntax highlighting) + ng → Search by frontmatter tags +< + +Working with Links~ + *markdown-notes-usage-links* +Creating Links Between Notes: > + nl → Search for a note and insert [[wiki-link]] + Press Ctrl+L to just insert the link + Press Enter to open the note +< + +Following and Managing Links: > + gf → Follow the link under cursor + nb → Show all notes that link to current note (backlinks) + nr → Rename current note and update all references +< + +Using Templates~ + *markdown-notes-usage-templates* +Templates make your notes consistent and save time: > + np → Insert template at cursor position +< + +Example template (~/notes/templates/meeting.md): > + --- + title: {{title}} + date: {{date}} + tags: [meetings] + --- + + # {{title}} + + **Date:** {{datetime}} + **Attendees:** + + ## Agenda + + ## Notes + + ## Action Items + - [ ] +< + +============================================================================== +KEY MAPPINGS *markdown-notes-key-mappings* + +All keybindings use `n` as the prefix for easy discovery: + +Daily Notes~ +`nd` Create/open today's daily note +`ny` Open yesterday's daily note +`nt` Open tomorrow's daily note + +Note Management~ +`nn` Create a new note +`nc` Create note with template selection +`nf` Search and open existing notes +`ns` Search within note contents + +Links and Navigation~ +`nl` Search for note and insert wiki-link +`nb` Show notes linking to current note +`nr` Rename note and update all references +`gf` Follow link under cursor + +Templates and Tags~ +`np` Insert template at cursor +`ng` Find notes by frontmatter tags + +Workspaces~ +`nw` Switch between workspaces + +Note: All keybindings can be customized in your configuration. + +============================================================================== +ADVANCED CONFIGURATION *markdown-notes-advanced-config* + +Custom Configuration Options~ + *markdown-notes-advanced-config-opts* +> + require("markdown-notes").setup({ + -- Core paths + vault_path = "~/notes", + templates_path = "~/notes/templates", + dailies_path = "~/notes/daily", + weekly_path = "~/notes/weekly", notes_subdir = "notes", - default_template = nil, -- Optional: default template for new notes (e.g., "note") + + -- Template settings + default_template = "basic", -- Auto-apply this template to new notes -- Custom template variables template_vars = { @@ -90,9 +243,12 @@ Default configuration: > title = function() return vim.fn.expand("%:t:r") end, yesterday = function() return os.date("%Y-%m-%d", os.time() - 86400) end, tomorrow = function() return os.date("%Y-%m-%d", os.time() + 86400) end, + -- Add your own custom variables + author = function() return "Your Name" end, + project = function() return vim.fn.getcwd():match("([^/]+)$") end, }, - -- Key mappings + -- Customize keybindings mappings = { daily_note_today = "nd", daily_note_yesterday = "ny", @@ -111,102 +267,68 @@ Default configuration: > }) < - *markdown-notes-vault-path* -vault_path~ - Path to your notes vault. Default: "~/repos/notes" - - *markdown-notes-templates-path* -templates_path~ - Path to your templates directory. Default: "~/repos/notes/sys/templates" - - *markdown-notes-dailies-path* -dailies_path~ - Path to your daily notes directory. Default: "~/repos/notes/personal/dailies/2025" - - *markdown-notes-weekly-path* -weekly_path~ - Path to your weekly notes directory. Default: "~/repos/notes/personal/weekly" - - *markdown-notes-notes-subdir* -notes_subdir~ - Subdirectory within vault_path for general notes. Default: "notes" - - *markdown-notes-default-template* -default_template~ - Default template to use for new notes created with `new_note`. If set to - a template name (without .md extension), that template will be applied - automatically. If nil, basic frontmatter is used. Default: nil - - *markdown-notes-template-vars-config* -template_vars~ - Table of template variables (see |markdown-notes-template-vars|). - - *markdown-notes-mappings* -mappings~ - Table of key mappings (see |markdown-notes-commands|). +Directory Structure Example~ + *markdown-notes-advanced-directory-structure* +> + ~/notes/ # Main vault + ├── templates/ # Your templates + │ ├── Daily.md # Auto-applied to daily notes + │ ├── meeting.md # Meeting template + │ └── project.md # Project template + ├── daily/ # Daily notes + │ ├── 2025-01-15.md + │ └── 2025-01-16.md + └── notes/ # Regular notes + ├── project-ideas.md + └── learning-resources.md +< ============================================================================== WORKSPACES *markdown-notes-workspaces* -Workspaces allow you to manage multiple independent note vaults simultaneously. -Each workspace has its own configuration for paths, templates, and settings. -You can set a default workspace and manually switch between them as needed. +Workspaces allow you to manage multiple independent note vaults simultaneously. +Perfect for separating work notes, personal notes, and project-specific +documentation. -Workspace Setup~ +Setting Up Workspaces~ *markdown-notes-workspace-setup* -Basic workspace configuration: > - -- Basic plugin setup +> + -- Base configuration (becomes your default workspace) require("markdown-notes").setup({ - -- Default configuration (fallback when no workspace is detected) - vault_path = "~/default-notes", - templates_path = "~/default-notes/templates", + vault_path = "~/notes", + templates_path = "~/notes/templates", + default_workspace = "personal", -- Optional: specify default }) - - -- Set up work workspace + + -- Work workspace require("markdown-notes").setup_workspace("work", { vault_path = "~/work-notes", templates_path = "~/work-notes/templates", - dailies_path = "~/work-notes/dailies", - notes_subdir = "projects", + dailies_path = "~/work-notes/standups", default_template = "work-note", template_vars = { project = function() return "Current Project" end, + sprint = function() return "Sprint-" .. os.date("%U") end, }, }) - - -- Set up personal workspace - require("markdown-notes").setup_workspace("personal", { - vault_path = "~/personal-notes", - templates_path = "~/personal-notes/templates", - dailies_path = "~/personal-notes/journal", - notes_subdir = "thoughts", - default_template = "personal-note", + + -- Research workspace + require("markdown-notes").setup_workspace("research", { + vault_path = "~/research/papers", + templates_path = "~/research/templates", + dailies_path = "~/research/lab-notes", + default_template = "research-paper", }) < -Workspace Behavior~ - *markdown-notes-workspace-behavior* -The plugin uses a simple, predictable workspace system: - -- **Default workspace**: Set via `default_workspace` in config, or first workspace configured becomes default -- **Manual switching**: Use `nw` or commands to switch active workspace -- **Persistent**: All operations use the active workspace until you manually switch - -All plugin commands use the currently active workspace configuration. - -Commands~ - *markdown-notes-ex-commands* - -Note Management Commands~ - -:MarkdownNotesRename [{name}] *:MarkdownNotesRename* - Rename current note and update all references. If {name} is not provided, - prompts for the new name. Shows confirmation dialog with file count. - -Workspace Management Commands~ - *markdown-notes-workspace-commands* -The following commands are available for workspace management: +Workspace Workflow~ + *markdown-notes-workspace-workflow* +- Switch workspaces: Use `nw` to pick from available workspaces +- Persistent context: All commands use the active workspace until you switch +- Independent settings: Each workspace has its own paths, templates, and variables +Workspace Commands~ + *markdown-notes-workspace-commands* :MarkdownNotesWorkspaceStatus *:MarkdownNotesWorkspaceStatus* Show current workspace for the buffer @@ -214,318 +336,209 @@ The following commands are available for workspace management: Pick workspace with fuzzy finder :MarkdownNotesWorkspaceSwitch {name} *:MarkdownNotesWorkspaceSwitch* - Switch to a workspace directory. Tab completion available. + Switch to specific workspace -Multi-Vault Workflow~ - *markdown-notes-multi-vault-workflow* -With workspaces, you can: +============================================================================== +TEMPLATE SYSTEM *markdown-notes-template-system* + +Templates are markdown files with special `{{variable}}` syntax that gets +substituted when creating notes. + +Built-in Template Variables~ + *markdown-notes-template-built-in-vars* +`{{date}}` Current date (2025-01-15) +`{{time}}` Current time (14:30) +`{{datetime}}` Date and time (2025-01-15 14:30) +`{{title}}` File name without extension (meeting-notes) +`{{yesterday}}` Yesterday's date (2025-01-14) +`{{tomorrow}}` Tomorrow's date (2025-01-16) + +Creating Custom Variables~ + *markdown-notes-template-custom-vars* +Add custom variables in your configuration: > + require("markdown-notes").setup({ + template_vars = { + author = function() return "Your Name" end, + project = function() return vim.fn.getcwd():match("([^/]+)$") end, + week = function() return os.date("Week %U") end, + uuid = function() return vim.fn.system("uuidgen"):gsub("\n", "") end, + }, + }) +< -1. Work on multiple projects simultaneously: Have work notes open in one split - and personal notes in another -2. Context-specific templates: Use different templates for work vs personal notes -3. Separate organization: Each workspace maintains its own directory structure - and settings -4. Consistent behavior: All plugin commands use the active workspace - configuration +Example Templates~ + *markdown-notes-template-examples* +Daily Note Template (templates/Daily.md): > + --- + title: Daily Note - {{date}} + date: {{date}} + tags: [daily] + --- -============================================================================== -USAGE *markdown-notes-usage* + # {{date}} - Daily Notes -Daily Notes~ - *markdown-notes-daily-notes* -Create and navigate daily notes with automatic templating. + ## Today's Goals + - [ ] -- `nd` - Open today's daily note -- `ny` - Open yesterday's daily note -- `nt` - Open tomorrow's daily note + ## Notes -Daily notes are automatically created with your `Daily.md` template if it exists. + ## Tomorrow's Prep + - [ ] +< -Note Management~ - *markdown-notes-note-management* -- `nn` - Create a new note (uses default template if configured, otherwise basic frontmatter) -- `nc` - Create a new note from template (choose template interactively) -- `nf` - Find and open existing notes (with file preview and syntax highlighting) -- `ns` - Search within note contents (with file preview and syntax highlighting) +Meeting Template (templates/meeting.md): > + --- + title: {{title}} + date: {{date}} + tags: [meeting] + attendees: [] + --- -Links and Navigation~ - *markdown-notes-links-navigation* -- `nl` - Search for a note and insert a `[[wiki-link]]` (with file preview) - - Press `Enter` to open the selected note - - Press `Ctrl+L` to insert a link to the note -- `gf` - Follow the link under cursor (supports fuzzy matching) -- `nb` - Show backlinks to the current note (with file preview) - - Press `Enter` to open the selected note - - Press `Ctrl+L` to insert a link to the note -- `nr` - Rename the current note and update all references - - Prompts for new name and shows confirmation with file count - - Updates all `[[wiki-links]]` and `[[link|display text]]` references - - Handles files in subdirectories and prevents partial matches - -Templates~ - *markdown-notes-templates* -- `np` - Insert a template at cursor position (with file preview) -- Templates support variable substitution with `{{variable}}` syntax - -Tags~ - *markdown-notes-tags* -- `ng` - Search for tags in frontmatter (YAML format: `tags: [tag1, tag2]`) -- `nw` - Pick workspace with fuzzy finder - - Shows tag list with file counts - - Select a tag to view files containing that tag with preview + # {{title}} + + **Date:** {{datetime}} + **Attendees:** + + ## Agenda + + ## Discussion Notes + + ## Action Items + - [ ] + + ## Links +< ============================================================================== COMMANDS *markdown-notes-commands* +Ex Commands~ + *markdown-notes-ex-commands* +:MarkdownNotesRename [{name}] *:MarkdownNotesRename* + Rename current note and update all references. If {name} is not provided, + prompts for the new name. Shows confirmation dialog with file count. + +Function API~ + *markdown-notes-function-commands* The plugin provides the following functions that can be called directly: - *markdown-notes.create_new_note* -require("markdown-notes.notes").create_new_note() +require("markdown-notes.notes").create_new_note() *markdown-notes.create_new_note* Create a new note. Uses default template if configured, otherwise creates basic frontmatter. Prompts for optional title. - *markdown-notes.create_from_template* -require("markdown-notes.notes").create_from_template() +require("markdown-notes.notes").create_from_template() *markdown-notes.create_from_template* Create a new note from template. Prompts for title, then allows interactive template selection with file preview. - *markdown-notes.find_notes* -require("markdown-notes.notes").find_notes() +require("markdown-notes.notes").find_notes() *markdown-notes.find_notes* Find and open existing notes using fuzzy finder. - *markdown-notes.search_notes* -require("markdown-notes.notes").search_notes() +require("markdown-notes.notes").search_notes() *markdown-notes.search_notes* Search within note contents using fuzzy finder. - *markdown-notes.search_tags* -require("markdown-notes.notes").search_tags() +require("markdown-notes.notes").search_tags() *markdown-notes.search_tags* Search for tags within notes. - *markdown-notes.open_daily_note* -require("markdown-notes.daily").open_daily_note(offset) +require("markdown-notes.daily").open_daily_note(offset) *markdown-notes.open_daily_note* Open daily note. `offset` is number of days from today (0 = today, -1 = yesterday, 1 = tomorrow). - *markdown-notes.search_and_link* -require("markdown-notes.links").search_and_link() +require("markdown-notes.links").search_and_link() *markdown-notes.search_and_link* Search for a note and insert a wiki-style link. - *markdown-notes.follow_link* -require("markdown-notes.links").follow_link() +require("markdown-notes.links").follow_link() *markdown-notes.follow_link* Follow the wiki-style link under cursor. - *markdown-notes.show_backlinks* -require("markdown-notes.links").show_backlinks() +require("markdown-notes.links").show_backlinks() *markdown-notes.show_backlinks* Show backlinks to the current note. - *markdown-notes.rename_note* -require("markdown-notes.links").rename_note(new_name) +require("markdown-notes.links").rename_note(new_name) *markdown-notes.rename_note* Rename the current note and automatically update all wiki-style link references across the vault. Supports both `[[note]]` and `[[note|display]]` formats. Shows confirmation dialog with file count before proceeding. - Handles files in subdirectories and prevents partial matches. - *markdown-notes.pick_template* -require("markdown-notes.templates").pick_template() +require("markdown-notes.templates").pick_template() *markdown-notes.pick_template* Pick and insert a template at cursor position. - *markdown-notes.insert_template* -require("markdown-notes.templates").insert_template(template_name, custom_vars) +require("markdown-notes.templates").insert_template(template_name, custom_vars) *markdown-notes.insert_template* Insert a specific template with optional custom variables. - *markdown-notes.apply_template_to_file* -require("markdown-notes.templates").apply_template_to_file(template_name, custom_vars) - Replace entire buffer content with specified template. Used by - create_from_template(). Returns true on success, false on failure. - ============================================================================== -NOTE NAMING *markdown-notes-note-naming* - -The plugin uses a timestamp-based naming convention for notes to ensure unique -filenames and chronological organization. - -Filename Format~ - *markdown-notes-filename-format* -When creating a new note, the filename is generated as follows: - -- If no title is provided: `{timestamp}.md` -- If a title is provided: `{timestamp}-{sanitized-title}.md` - -Where: -- `{timestamp}` is the Unix timestamp (seconds since epoch) -- `{sanitized-title}` is the title with spaces replaced by hyphens, - non-alphanumeric characters removed, and converted to lowercase - -Examples: -- No title: `1735948800.md` -- Title "My Project Ideas": `1735948800-my-project-ideas.md` -- Title "Meeting Notes #1": `1735948800-meeting-notes-1.md` - -Benefits~ - *markdown-notes-naming-benefits* -- Unique filenames prevent conflicts -- Chronological ordering when sorted by filename -- Human-readable titles when provided -- Consistent naming across all notes - -Daily Notes~ - *markdown-notes-daily-note-naming* -Daily notes use a different naming convention based on dates: -- Format: `YYYY-MM-DD.md` -- Example: `2025-01-03.md` - -This provides a clear, date-based organization for daily notes separate from -general notes. - -============================================================================== -TEMPLATE VARIABLES *markdown-notes-template-vars* +TROUBLESHOOTING *markdown-notes-troubleshooting* -Available template variables for use in templates with `{{variable}}` syntax: +Common Issues~ + *markdown-notes-common-issues* -`{{date}}` Current date (YYYY-MM-DD) -`{{time}}` Current time (HH:MM) -`{{datetime}}` Current date and time -`{{title}}` Current file name without extension -`{{note_title}}` User-provided title when creating notes (same as `{{title}}` for note creation) -`{{yesterday}}` Yesterday's date -`{{tomorrow}}` Tomorrow's date +"fzf-lua not found" Error~ +Solution: Install fzf-lua dependency: > + -- lazy.nvim + dependencies = { "ibhagwan/fzf-lua" } -Example template: > - --- - title: {{title}} - date: {{date}} - tags: [] - --- - - # {{title}} - - Created on {{datetime}} + -- packer.nvim + requires = { "ibhagwan/fzf-lua" } < -You can define custom template variables in your configuration: > - template_vars = { - author = function() return "Your Name" end, - project = function() return vim.fn.getcwd():match("([^/]+)$") end, - } +Templates Not Working~ +Checklist: +1. Verify `templates_path` exists and contains `.md` files +2. Check template syntax uses `{{variable}}` (not `{variable}`) +3. Ensure template file permissions are readable + +Links Not Following (gf not working)~ +Solution: Ensure you're using the correct link format: +- Correct: `[[note-name]]` or `[[note-name.md]]` +- Incorrect: `[note-name](note-name.md)` (standard markdown links) + +Performance Issues with Large Vaults~ +Solutions: +- Use `.gitignore` to exclude non-note files from searches +- Consider splitting large vaults into multiple workspaces +- Ensure fzf-lua is properly configured + +Debug Information~ + *markdown-notes-debug-info* +Check your configuration: > + :lua print(vim.inspect(require("markdown-notes").config)) < -============================================================================== -DIRECTORY STRUCTURE *markdown-notes-directory* - -Recommended directory structure: > - ~/repos/notes/ - ├── sys/ - │ └── templates/ - │ ├── Daily.md - │ ├── Meeting.md - │ └── Project.md - ├── personal/ - │ └── dailies/ - │ └── 2025/ - │ ├── 2025-01-01.md - │ └── 2025-01-02.md - └── notes/ - ├── project-ideas.md - └── learning-resources.md +Check current workspace: > + :MarkdownNotesWorkspaceStatus < ============================================================================== -LINK FORMATS *markdown-notes-link-formats* - -Wiki-style Links~ - *markdown-notes-wiki-links* -The plugin supports standard wiki-style links with the following formats: - -- `[[note-name]]` - Basic link to a note -- `[[note-name|display text]]` - Link with custom display text - -Link Resolution~ - *markdown-notes-link-resolution* -When following links with `gf`, the plugin uses fuzzy matching: - -1. First tries exact filename match: `note-name.md` -2. If not found, searches for files containing the link text: `*note-name*.md` -3. Opens the first match found - -Backlinks Detection~ - *markdown-notes-backlinks-detection* -The backlinks feature (`nb`) detects both: -- Basic links: `[[current-note]]` -- Links with display text: `[[current-note|custom text]]` - -============================================================================== -TROUBLESHOOTING *markdown-notes-troubleshooting* - -Common Issues~ - *markdown-notes-common-issues* - -fzf-lua not available~ -If you see "fzf-lua not available" errors, ensure fzf-lua is installed: -- Add `"ibhagwan/fzf-lua"` to your plugin manager dependencies -- Run `:checkhealth fzf-lua` to verify installation - -Template not found~ -If templates aren't loading: -- Verify `templates_path` in your configuration exists -- Ensure template files have `.md` extension -- Check file permissions on template directory - -No backlinks found~ -If backlinks aren't detected: -- Ensure links use exact `[[note-name]]` format (case-sensitive) -- Check that the current file is within your vault_path -- Verify linked files exist in your vault - -File previews not working~ -If file previews don't show: -- Ensure you have a compatible terminal with true color support -- Check that your colorscheme supports syntax highlighting -- Verify fzf-lua is properly configured - -Performance Issues~ - *markdown-notes-performance-issues* -For large vaults (>1000 files): -- Consider excluding certain directories from search -- Use more specific search terms -- Consider organizing notes into subdirectories - -============================================================================== -API *markdown-notes-api* +API REFERENCE *markdown-notes-api* +Setup Functions~ *markdown-notes.setup* require("markdown-notes").setup({opts}) - Setup function to configure the plugin. See |markdown-notes-configuration| - for available options. + Setup function to configure the plugin. See |markdown-notes-basic-config| + and |markdown-notes-advanced-config| for available options. *markdown-notes.setup_workspace* require("markdown-notes").setup_workspace(name, {opts}) Setup a workspace with the given name and configuration options. See |markdown-notes-workspaces| for details and examples. +Module API~ + *markdown-notes-module-api* The plugin exposes the following modules: - *markdown-notes.config* -require("markdown-notes.config") +require("markdown-notes.config") *markdown-notes.config* Configuration management module. - *markdown-notes.daily* -require("markdown-notes.daily") +require("markdown-notes.daily") *markdown-notes.daily* Daily notes functionality. - *markdown-notes.notes* -require("markdown-notes.notes") +require("markdown-notes.notes") *markdown-notes.notes* General note management. - *markdown-notes.links* -require("markdown-notes.links") +require("markdown-notes.links") *markdown-notes.links* Wiki-style links and backlinks. - *markdown-notes.templates* -require("markdown-notes.templates") +require("markdown-notes.templates") *markdown-notes.templates* Template system and variable substitution. - *markdown-notes.workspace* -require("markdown-notes.workspace") +require("markdown-notes.workspace") *markdown-notes.workspace* Workspace management and switching functionality. ============================================================================== diff --git a/doc/tags b/doc/tags index 281fa0e..0559b3d 100644 --- a/doc/tags +++ b/doc/tags @@ -1,39 +1,39 @@ +:MarkdownNotesRename markdown-notes.txt /*:MarkdownNotesRename* +:MarkdownNotesWorkspacePick markdown-notes.txt /*:MarkdownNotesWorkspacePick* +:MarkdownNotesWorkspaceStatus markdown-notes.txt /*:MarkdownNotesWorkspaceStatus* +:MarkdownNotesWorkspaceSwitch markdown-notes.txt /*:MarkdownNotesWorkspaceSwitch* markdown-notes markdown-notes.txt /*markdown-notes* +markdown-notes-advanced-config markdown-notes.txt /*markdown-notes-advanced-config* +markdown-notes-advanced-config-opts markdown-notes.txt /*markdown-notes-advanced-config-opts* +markdown-notes-advanced-directory-structure markdown-notes.txt /*markdown-notes-advanced-directory-structure* markdown-notes-api markdown-notes.txt /*markdown-notes-api* -markdown-notes-backlinks-detection markdown-notes.txt /*markdown-notes-backlinks-detection* +markdown-notes-basic-config markdown-notes.txt /*markdown-notes-basic-config* markdown-notes-commands markdown-notes.txt /*markdown-notes-commands* markdown-notes-common-issues markdown-notes.txt /*markdown-notes-common-issues* -markdown-notes-configuration markdown-notes.txt /*markdown-notes-configuration* markdown-notes-contents markdown-notes.txt /*markdown-notes-contents* -markdown-notes-dailies-path markdown-notes.txt /*markdown-notes-dailies-path* -markdown-notes-daily-note-naming markdown-notes.txt /*markdown-notes-daily-note-naming* -markdown-notes-daily-notes markdown-notes.txt /*markdown-notes-daily-notes* -markdown-notes-default-template markdown-notes.txt /*markdown-notes-default-template* -markdown-notes-directory markdown-notes.txt /*markdown-notes-directory* -markdown-notes-filename-format markdown-notes.txt /*markdown-notes-filename-format* +markdown-notes-debug-info markdown-notes.txt /*markdown-notes-debug-info* +markdown-notes-ex-commands markdown-notes.txt /*markdown-notes-ex-commands* +markdown-notes-function-commands markdown-notes.txt /*markdown-notes-function-commands* markdown-notes-installation markdown-notes.txt /*markdown-notes-installation* markdown-notes-introduction markdown-notes.txt /*markdown-notes-introduction* -markdown-notes-link-formats markdown-notes.txt /*markdown-notes-link-formats* -markdown-notes-link-resolution markdown-notes.txt /*markdown-notes-link-resolution* -markdown-notes-links-navigation markdown-notes.txt /*markdown-notes-links-navigation* -markdown-notes-mappings markdown-notes.txt /*markdown-notes-mappings* -markdown-notes-naming-benefits markdown-notes.txt /*markdown-notes-naming-benefits* -markdown-notes-note-management markdown-notes.txt /*markdown-notes-note-management* -markdown-notes-note-naming markdown-notes.txt /*markdown-notes-note-naming* -markdown-notes-notes-subdir markdown-notes.txt /*markdown-notes-notes-subdir* -markdown-notes-performance-issues markdown-notes.txt /*markdown-notes-performance-issues* +markdown-notes-key-mappings markdown-notes.txt /*markdown-notes-key-mappings* +markdown-notes-module-api markdown-notes.txt /*markdown-notes-module-api* +markdown-notes-quick-start markdown-notes.txt /*markdown-notes-quick-start* markdown-notes-requirements markdown-notes.txt /*markdown-notes-requirements* -markdown-notes-tags markdown-notes.txt /*markdown-notes-tags* -markdown-notes-template-vars markdown-notes.txt /*markdown-notes-template-vars* -markdown-notes-template-vars-config markdown-notes.txt /*markdown-notes-template-vars-config* -markdown-notes-templates markdown-notes.txt /*markdown-notes-templates* -markdown-notes-templates-path markdown-notes.txt /*markdown-notes-templates-path* +markdown-notes-template-built-in-vars markdown-notes.txt /*markdown-notes-template-built-in-vars* +markdown-notes-template-custom-vars markdown-notes.txt /*markdown-notes-template-custom-vars* +markdown-notes-template-examples markdown-notes.txt /*markdown-notes-template-examples* +markdown-notes-template-system markdown-notes.txt /*markdown-notes-template-system* markdown-notes-troubleshooting markdown-notes.txt /*markdown-notes-troubleshooting* -markdown-notes-usage markdown-notes.txt /*markdown-notes-usage* -markdown-notes-vault-path markdown-notes.txt /*markdown-notes-vault-path* -markdown-notes-weekly-path markdown-notes.txt /*markdown-notes-weekly-path* -markdown-notes-wiki-links markdown-notes.txt /*markdown-notes-wiki-links* -markdown-notes.apply_template_to_file markdown-notes.txt /*markdown-notes.apply_template_to_file* +markdown-notes-usage-daily-notes markdown-notes.txt /*markdown-notes-usage-daily-notes* +markdown-notes-usage-guide markdown-notes.txt /*markdown-notes-usage-guide* +markdown-notes-usage-links markdown-notes.txt /*markdown-notes-usage-links* +markdown-notes-usage-note-management markdown-notes.txt /*markdown-notes-usage-note-management* +markdown-notes-usage-templates markdown-notes.txt /*markdown-notes-usage-templates* +markdown-notes-workspace-commands markdown-notes.txt /*markdown-notes-workspace-commands* +markdown-notes-workspace-setup markdown-notes.txt /*markdown-notes-workspace-setup* +markdown-notes-workspace-workflow markdown-notes.txt /*markdown-notes-workspace-workflow* +markdown-notes-workspaces markdown-notes.txt /*markdown-notes-workspaces* markdown-notes.config markdown-notes.txt /*markdown-notes.config* markdown-notes.create_from_template markdown-notes.txt /*markdown-notes.create_from_template* markdown-notes.create_new_note markdown-notes.txt /*markdown-notes.create_new_note* @@ -45,10 +45,13 @@ markdown-notes.links markdown-notes.txt /*markdown-notes.links* markdown-notes.notes markdown-notes.txt /*markdown-notes.notes* markdown-notes.open_daily_note markdown-notes.txt /*markdown-notes.open_daily_note* markdown-notes.pick_template markdown-notes.txt /*markdown-notes.pick_template* +markdown-notes.rename_note markdown-notes.txt /*markdown-notes.rename_note* markdown-notes.search_and_link markdown-notes.txt /*markdown-notes.search_and_link* markdown-notes.search_notes markdown-notes.txt /*markdown-notes.search_notes* markdown-notes.search_tags markdown-notes.txt /*markdown-notes.search_tags* markdown-notes.setup markdown-notes.txt /*markdown-notes.setup* +markdown-notes.setup_workspace markdown-notes.txt /*markdown-notes.setup_workspace* markdown-notes.show_backlinks markdown-notes.txt /*markdown-notes.show_backlinks* markdown-notes.templates markdown-notes.txt /*markdown-notes.templates* markdown-notes.txt markdown-notes.txt /*markdown-notes.txt* +markdown-notes.workspace markdown-notes.txt /*markdown-notes.workspace*