All notable changes to markdown-plus.nvim will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.4.0 - 2025-10-25
-
Quotes Management: Added support for toggling blockquotes in markdown
- Toggle blockquote on current line with
<leader>mqin normal mode - Toggle blockquote on selected lines in visual mode with
<leader>mq <Plug>mapping:<Plug>(MarkdownPlusToggleQuote)for custom keymap configuration- Smart handling of existing blockquotes
- Toggle blockquote on current line with
-
Additional list types support:
- Letter-based lists:
a.,b.,c., ...z.(lowercase) - Letter-based lists:
A.,B.,C., ...Z.(uppercase) - Parenthesized ordered lists:
1),2),3) - Parenthesized letter lists:
a),b),c)andA),B),C) - All new list types support auto-continuation, indentation, renumbering, and checkboxes
- Single-letter support with wraparound (z→a, Z→A)
- Letter-based lists:
- List module refactoring:
- Pattern-driven architecture with
PATTERN_CONFIGtable - Extracted helper functions:
get_next_marker(),get_previous_marker(),extract_list_content() - Reduced code size from 878 to 763 lines (13% reduction)
- Simplified
parse_list_line()from ~170 lines to ~30 lines - Added module-level constants for delimiters
- Pattern-driven architecture with
- Invalid pattern capture error when indenting parenthesized lists
- Tab/Shift-Tab now work correctly with all list types including parenthesized variants
- 'O' command (insert above) now correctly calculates markers for letter-based lists
1.3.1 - 2025-10-25
- Visual mode selection issue: Fixed error when formatting text on first visual selection
- Implemented workaround for Neovim's visual mode marks (
'<and'>) not updating until after exiting visual mode - Now uses
vim.fn.getpos('v')andvim.fn.getpos('.')when in active visual mode - Falls back to marks when called after visual mode for compatibility
- Added position normalization to handle backward selections (right-to-left, bottom-to-top)
- Added visual selection restoration with
gvto keep selection active after formatting - Added range validation to prevent API crashes with helpful error messages
- Formatting now works correctly on the first selection without needing to reselect text
- Expanded test coverage with 4 new visual mode selection tests (27 format tests total)
- Implemented workaround for Neovim's visual mode marks (
1.3.0 - 2025-10-23
- vim.g configuration support: Plugin can now be configured via
vim.g.markdown_plus(table or function)- Supports both Lua and Vimscript configuration
- Allows dynamic configuration via function
- Merges with
setup()configuration (setup takes precedence) - Full validation applies to vim.g config same as setup()
- LuaRocks distribution: Plugin now available via LuaRocks package manager
- Created rockspec files (scm-1 and versioned)
- Added LuaRocks installation instructions to README
- Simplified installation without plugin manager
- Added
filetypesfield to configuration validation - Comprehensive vim.g documentation in README and vimdoc
- Configuration priority: Default < vim.g < setup() parameter
- Enhanced type annotations for configuration system
- Updated installation documentation with LuaRocks method
1.2.0 - 2025-01-20
- Complete test coverage for format and links modules (35 new tests)
<Plug>mappings for all features (35+ mappings)- Full keymap customization support
- Smart
hasmapto()detection to avoid conflicts - Backward compatible with existing keymaps
- Comprehensive keymap customization documentation
- Complete
<Plug>mapping reference in README
- Default keymaps now check for existing mappings before setting
- Updated contribution guidelines to allow direct collaboration
- Critical keymap bug in visual mode mappings
- Visual mode
<Plug>mappings now use Lua functions instead of string commands - Added proper keymap descriptions for better discoverability
1.1.0 - 2025-01-19
- Links and References management module
- Insert and edit markdown links
- Convert text selection to links
- Auto-convert bare URLs to markdown links
- Convert between inline and reference-style links
- Smart reference ID generation and reuse
- Support for multiple filetypes configuration
- Plugin can now work with any filetype, not just markdown
- Configurable via
filetypesoption in setup
- Plugin now enables for configured filetypes instead of just markdown
- Updated documentation for multi-filetype support
- Corrected documentation keymaps to match implementation
- Fixed link detection edge cases
- Removed unimplemented features from config and docs
1.0.0 - 2025-01-19
- Header promotion/demotion with
<leader>h+and<leader>h- - Jump between headers with
]]and[[ - Set specific header levels with
<leader>h1through<leader>h6 - Generate Table of Contents with
<leader>ht - Update existing TOC with
<leader>hu - Follow TOC links with
gd - TOC duplicate prevention using HTML comment markers (
<!-- TOC -->/<!-- /TOC -->) - GitHub-style slug generation for anchors
- Auto-continuation of list items on
<CR>in insert mode - Context-aware
oandOin normal mode for list items - Intelligent list indentation with
<Tab>and<S-Tab>(insert mode) - Smart backspace with
<BS>to remove empty list markers - Automatic renumbering of ordered lists on text changes
- Manual renumbering with
<leader>mr - Debug command
<leader>mdfor troubleshooting list detection - Support for nested lists with proper indentation handling
- Empty list item removal (press
<CR>twice to exit list)
- Toggle bold formatting with
<leader>mb(normal + visual mode) - Toggle italic formatting with
<leader>mi(normal + visual mode) - Toggle strikethrough with
<leader>ms(normal + visual mode) - Toggle inline code with
<leader>mc(normal + visual mode) - Clear all formatting with
<leader>mC(normal + visual mode) - Smart word boundary detection for formatting operations
- Comprehensive help file accessible via
:help markdown-plus - Complete API documentation for all modules
- Usage examples and troubleshooting guide
- Installation instructions for lazy.nvim
- Context-aware keymaps that only activate when appropriate
- Proper fallback to default Vim behavior outside of lists
- No interference with normal mode operations
- Buffer-local keymaps for Markdown files only
- Automatic feature enablement via FileType autocmd
- Initial stable release
- List operations now properly enter insert mode on non-list lines
- Fixed
<CR>behavior to work correctly on regular text - Removed global
<CR>mapping that interfered with normal mode - All keymaps now respect context (list vs non-list, insert vs normal)
The improvements from Phase 1 and Phase 2 (testing infrastructure, type safety, code quality tools, CI/CD) were integrated into versions 1.1.0 and 1.2.0 as part of the overall development process. These foundational improvements support all current and future features.