-
BREAKING FEATURE: blank lines are now completely ignored when deciding the toggling action. In practice this means that if target block consists only from commented and/or blank lines, it will be uncommented rather than commented.
-
BREAKING: Whitespace in comment parts is now treated more strictly. In particular:
-
Default
options.pad_comment_parts = true
now more explicitly means that any value of 'commentstring' is transformed so that comment parts have exactly single space inner padding.Example: any
/*%s*/
,/* %s */
, or/* %s */
is equivalent to having/* %s */
. -
During detection whether consecutive lines are commented or not, comment parts should be present exactly around non-blank text for line to be treated as commented; while around blank text any padding is allowed. With default
options.pad_comment_parts = true
it means that parts should be padded from inner content by at least one space.Example with
/* %s */
'commentstring' value:/* this is commented */
while/*this is not commented */
and/* this is not commented*/
. -
Commenting blank lines is done with trimmed comments parts, while uncommenting explicitly results into empty lines.
-
-
FEATURE: Support dot-repeat after initial commenting is done for visual selection; repeating is done for same relative range.
- Introduction of a new module.
- FEATURE: add new
MiniFilesExplorerOpen
andMiniFilesExplorerClose
events.
- BREAKING FEATURE: update some highlight groups for better usability:
DiffChange
andDiffText
- make changed diff lines have colored background.Folded
- make folds differ fromCursorLine
.QuickFixLine
- make current quickfix item differ fromCursorLine
.
- FEATURE: add
gen_integration.diff()
which highlights general diff hunks from 'mini.diff'.
- BREAKING: stop trying to parse path for special format ("path:row" and "path:row:col") if supplied inside a table item. This made impossible working with paths containing ":".
- FEATURE: respect general URI format for paths inside table items.
- Update
builtin.files()
to use table items when string item might be ambiguous.
- Explicitly block all events in
open()
during startup for a better performance.
- BREAKING FEATURE: child process is now created with extra
--headless --cmd "set lines=24 columns=80"
arguments making it headless but still reasonably similar to fully functioning Neovim during interactive usage. This change should generally not break a lot of things, while enabling a faster and more robust test execution.
- BREAKING: Remove
<C-z>
mapping, as it is more useful in most terminal emulators for suspending Neovim process (to later resume withfg
command). To correct latest misspelled word, use mappings like this:
vim.keymap.set('n', '<C-z>', '[s1z=', { desc = 'Correct latest misspelled word' })
vim.keymap.set('i', '<C-z>', '<C-g>u<Esc>[s1z=`]a<C-g>u', { desc = 'Correct latest misspelled word' })
- FEATURE: Add
tab:>
to 'listchars' option whenoptions.extra_ui
is set. This prevents showing^I
instead of a tab and actual value comes from Neovim's default. - FEATURE: Set
termguicolors
only on Neovim<0.10, as later versions should have it on by default (if terminal emulator supports it).
- FEATURE: Hooks are now called with data about commenting action.
Introduction of a new module.
- BREAKING: Stop using
:echo
to display messages and warnings in favor ofvim.notify()
. - BREAKING: Update default
write_post
hook to not display current time in success message. - Update to include space before
~
in generated section headings.
- FEATURE: Update
go_in()
to haveclose_on_file
option. - Show warning if action is set to override existing path.
- BREAKING FEATURE: Update verbatim text (
@text.literal
and@markup.raw
) color to be distinctive instead of dimmed. - FEATURE: Add support for new standard tree-sitter captures on Neovim>=0.10 (see neovim/neovim#27067).
- Update
bench_time()
to usevim.loop.hrtime()
(as better designed for benchmarking) instead ofvim.loop.gettimeofday()
.
Introduction of a new module.
- FEATURE: Implement
window.prompt_cursor
andwindow.prompt_prefix
config options. - FEATURE: Update
builtin.help()
to use tree-sitter highlighting (if there is any).
- FEATURE: Update
read()
to firstwrite()
current session (if there is any).
- FEATURE: Add
sections.pick()
with 'mini.pick' pickers.
- BREAKING FEATURE: Add
search_count
section to default active content.
Introduction of a new module.
- BREAKING: Stop supporting deprecated 'HiPhish/nvim-ts-rainbow2'.
- BREAKING FEATURE: Applying
delete()
andwipeout()
withoutforce
in a modified buffer now asks for confirmation instead of declining and showing message.
- FEATURE:
config.window.config
now can be callable returning window config.
- FEATURE: Implement
config.mappings.comment_visual
to configure mapped keys in Visual mode.
- FEATURE: Start adding
C
flag toshortmess
option on Neovim>=0.9. By @yamin-shihab, PR #554.
Introduction of a new module.
- BREAKING: Opening file which is present in unlisted buffer now makes the buffer listed.
- BREAKING: Highlight in preview now is not enabled if file is sufficiently large.
- FEATURE: Explorer now tracks if focus is lost and properly closes on detection.
- FEATURE: Implement
MiniFilesCursorLine
highlight group.
- FEATURE: Allow
pattern
in highlighter definitions to be an array to highlight several patterns under the same highlighter name. - FEATURE: Implement
extmark_opts
in highlighter definitions for a more control over extmarks placed at matches. - BREAKING: Field
priority
in highlighter definitions is soft deprecated in favor ofextmark_opts = { priority = <value> }
. - FEATURE: Update
compute_hex_color_group()
to allowstyle = 'fg'
. - FEATURE: Update
gen_highlighter.hex_color()
to allowstyle = 'inline'
(requires Neovim>=0.10 with support of inline extmarks). - FEATURE: Implement
get_matches()
to get buffer matches.
- BREAKING: Stop supporting deprecated 'HiPhish/nvim-ts-rainbow2'.
- FEATURE: Implement
config.window.zindex
to configure z-index of map window.
- FEATURE:
setup_auto_root()
andfind_root()
now havefallback
argument to be applied when no root is found withvim.fn.find()
.
Introduction of a new module.
- FEATURE:
show_path
insections.recent_files()
can now be callable for more control on how full path is displayed.
- BREAKING: Error in any "pre" hook now leads to test case not being executed (with note).
- BREAKING FEATURE:
child.get_screenshot()
now by default calls:redraw
prior to computing screenshot. Can be disabled by newopts.redraw
argument. - FEATURE: New method
child.lua_func()
can execute simple functions inside child process and return the result (stasjok, #437). - FEATURE:
expect.reference_screenshot()
now hasignore_lines
option allowing to ignore specified lines during screenshot compare.
- FEATURE: Allow
vis_mode
field in custom texobject region to force Visual mode with which textobject is selected.
- FEATURE: Add
MiniAnimateNormalFloat
highlight group to tweak highlighting ofopen
andclose
animations.
- FEATURE: Add 'HiPhish/rainbow-delimiters.nvim' integration.
- BREAKING: Remove
<C-w>
mapping in Terminal mode, as it is more useful inside terminal emulator itself.
- FEATURE: Add
add_to_jumplist
option to relevant targets (which move cursor and don't already add to jumplist).
- BREAKING: Create normal buffer instead of scratch when there is no reasonable target to focus (#394).
Introduction of a new module.
Introduction of a new module.
- FEATURE: Add 'HiPhish/rainbow-delimiters.nvim' integration.
- FEATURE: Add
gen_union_spotter()
to allow combining separate spotters into one.
Introduction of a new module.
- FEATURE: Allow
false
inconfig.mappings
to not map the key.
- FEATURE: Update
add
(sa
) with ability to replicate left and right parts by respecting[count]
. In Normal mode two kinds of[count]
is respected: one for operator (replicates left and right parts) and one for textobject/motion. In Visual mode[count]
replicates parts.
- Stop official support of Neovim 0.6.
- Use Lua API to create autocommands. Stop exporting functions only related to autocommands.
- Use Lua API to create default highlight groups.
- Use
vim.keymap
to deal with mappings. Stop exporting functions only related to mappings. - Add 'randomhue' color scheme.
- FEATURE: Add new integrations:
- Lsp semantic tokens.
- 'folke/lazy.nvim'.
- 'folke/noice.nvim'.
- 'kevinhwang91/nvim-ufo'.
- BREAKING FEATURE: Stop supporting archived 'p00f/nvim-ts-rainbow' in favor of 'HiPhish/nvim-ts-rainbow2'.
- Add dot-repeat support for adding empty lines (
go
andgO
mappings).
Introduction of a new module.
- FEATURE: Use tree-sitter information about locally active language to infer 'commentstring' option value.
- FEATURE: Add
options.custom_commentstring
option for a more granular customization of comment structure. - FEATURE: Add
get_commentstring()
function representing built-in logic of computing relevant 'commentstring'.
Introduction of a new module.
Introduction of a new module.
- Add and implement design principle for silencing module by setting
config.silent = true
. It is now present in modules capable of showing non-error feedback:- mini.ai
- mini.align
- mini.basics
- mini.bufremove
- mini.doc
- mini.jump
- mini.jump2d
- mini.starter
- mini.surround
- mini.test
Introduction of a new module.
- FEATURE: Add
options.start_of_line
option which controls whether to recognize as comment only lines without indent. - FEATURE: Add
options.ignore_blank_line
option which controls whether to ignore blank lines. - FEATURE: Add
options.pad_comment_parts
option which controls whether to ensure single space pad for comment leaders.
- FEATURE: Add
config.hooks.write_pre
hook to be executed before writing to a file.
- FEATURE: Add
MiniIndentscopeSymbolOff
highlight group to be used if scope's indent is not multiple of 'shiftwidth'. - FEATURE: Add
draw.priority
option to control priority of scope line draw.
- FEATURE: Add
view.n_steps_ahead
option which controls how many steps ahead to show. Appearance is controlled by newMiniJump2dSpotAhead
highlight group. - FEATURE: Add
view.dim
option which controls whether to dim lines with at least one jump spot. Appearance is controlled by newMiniJump2dDim
highlight group. - FEATURE: Add
MiniJump2dSpotUnique
highlight group to be used for spots with unique label for next step.
- FEATURE: Both
MiniPairs.br()
andMiniPairs.cr()
can now take a key which will be used instead of default<BS>
and<CR>
.
- FEATURE:
setup()
now creates global directory at pathconfig.directory
if it doesn't exist. - All actions now keep list of detected sessions up to date.
Introduction of a new module.
- FEATURE: Add
respect_selection_type
option which, when enabled, makes adding and deleting surrounding respect selection type:- Linewise adding places surrounding parts on separate lines while indenting surrounded lines once.
- Deleting surrounding which looks like a result of linewise adding will act to revert it: delete lines with surrounding parts and dedent surrounded lines once.
- Blockwise adding places surrounding parts on whole edges, not only start and end of selection.
- Start dual distribution. Every module is now distributed both as part of 'mini.nvim' library and as standalone plugin (in separate git repository).
- BREAKING FEATURE: In
MiniAi.gen_spec.argument()
optionseparators
(plural; array of characters) is soft deprecated in favor ofseparator
(singular; Lua pattern) option.
Introduction of new module.
Introduction of a new module.
- BREAKING:
MiniCompletion.config.window_dimensions
is renamed toMiniCompletion.config.window
to be able to handle more general configuration. - FEATURE: Add
MiniCompletion.config.window.info.border
andMiniCompletion.config.window.signature.border
which can be used to define border of info and signature floating windows respectively.
- BREAKING:
MiniIndentscopePrefix
is now not used (deprecated). It was initially introduced as a way to properly show scope indicator on empty lines. It had a drawback of overshadowing 'listchars' symbols (see #125) and vertical guides from 'lukas-reineke/indent-blankline.nvim'. As the other implementation approach was found by @mivort (see #161),MiniIndentscopePrefix
is no longer needed and no overshadowing is done. - BREAKING:
MiniIndentscope.gen_animation
is now a table (for consistency with othergen_*
functions in 'mini.nvim'). See "Migrate from function type" section of:h MiniIndentscope.gen_animation
. Calling it as function will be available until next release.
- FEATURE: Add
MiniMisc.setup_auto_root()
andMiniMisc.find_root()
for root finding functionality. NOTE: requires Neovim>=0.8. - FEATURE: Add
MiniMisc.setup_restore_cursor()
for automatically restoring latest cursor position on file reopen. By @cryptomilk, PR #198.
Introduction of new module.
- Stop official support of Neovim 0.5.
- Make all messages use colors and not cause hit-enter-prompt.
Introduction of new module.
- FEATURE: Add support for many plugin integrations.
- FEATURE: Implement
MiniBase16.config.plugins
for configuring plugin integrations. - BREAKING: Change some 'mini.nvim' highlights:
MiniCompletionActiveParameter
now highlights with background instead of underline.MiniJump2dSpot
now explicitly defined to use plugin's palette.MiniStarterItemPrefix
andMiniStarterQuery
are now bold for better visibility.
- BREAKING: Update highlight for changed git diff to be more visible and to comply more with general guidelines.
- BREAKING: Allow cursor to be positioned past the end of previous/current line (#113).
Introduction of new module.
- Item evaluation is now prepended with query reset, as it is rarely needed any more (#105).
- All hooks are now called with
(content, buf_id)
signature allowing them properly use current window layout.
- BREAKING FEATURE: update 'mini.surround' to share as much with 'mini.ai' as possible. This provides more integrated experience while enabling more useful features. Details:
- Custom surrounding specification for input action has changed. Instead of
{ find = <string>, extract = <string> }
it is now{ <function or composed pattern> }
. Previous format will work until the next release. See more in help file. - Algorithm for finding surrounding is now more powerful. It allows searching for more complex surroundings (via composed patterns or array of region pairs) and respects
v:count
. - Multiline input and output surroundings are now supported.
- Opening brackets (
(
,[
,{
,<
) now include whitespace in surrounding: input surrounding selects all inner edge whitespace, output surrounding is padded with single space. - Surrounding identifier
i
("interactive") is soft deprecated in favor of?
("user prompt"). - New surrounding aliases:
b
for "brackets". Input - any of balanced()
,[]
{}
. Output -()
.q
for "quotes". Input - any of"
,'
,`
. Output -""
.
- Three new search methods
'prev'
,'next'
, and'nearest'
for finding non-covering previous and next surrounding.
- Custom surrounding specification for input action has changed. Instead of
- BREAKING FEATURE: Implement "last"/"next" extended mappings which force
'prev'
or'next'
search method. Controlled withconfig.mappings.suffix_last
andconfig.mappings.suffix_next
respectively. This also means that custom surroundings with identifier equal to "last"/"next" mappings suffixes (defaults to 'l' and 'n') will work only with long enough delay after typing action mapping. - FEATURE: Implement
MiniSurround.gen_spec
with generators of common surrounding specifications (likeMiniSurround.gen_spec.input.treesitter
for tree-sitter based input surrounding).
- Update all tests to use new 'mini.test' module.
- FEATURE: Implement buffer local configuration. This is done with
vim.b.mini*_config
buffer variables. - Add new
minicyan
color scheme.
Introduction of new module.
- FEATURE: Now hooks can be used to terminate further actions by returning
false
(#108).
- BREAKING: Soft deprecate
vim.b.miniindentscope_options
in favor of usingoptions
field ofminiindentscope_config
.
- FEATURE: Hooks are now called with active session data as argument.
- FEATURE: Now it is possible to open multiple Starter buffers at the same time (#82). This comes with several changes which won't affect most users:
- BREAKING:
MiniStarter.content
is deprecated. UseMiniStarter.get_content()
. - All functions dealing with Starter buffer now have
buf_id
as argument (no breaking behavior).
- BREAKING:
- FEATURE: Implement
config.use_icons
which controls whether to use icons by default.
Introduction of new module.
- FEATURE: Implement
MiniTrailspace.trim_last_lines()
.
- Update all modules to supply mapping description for Neovim>=0.7.
- Add new module 'mini.jump2d'.
- Cover all modules with extensive tests.
- FEATURE: Implement
config.hooks
withpre
andpost
hooks (executed before and after successful commenting). Fixes #50, #59.
- Implement support for
additionalTextEdits
(issue #61).
- FEATURE: Implement idle timeout to stop jumping automatically (@annenpolka, #56).
- FEATURE: Implement
MiniJump.state
: table with useful model-related information. - BREAKING: Soft deprecate
config.highlight_delay
in favor ofconfig.delay.highlight
. - Update process of querying target symbol: show help message after delay, allow
<C-c>
to stop selecting target.
Introduction of new module.
- Create mappings for
<BS>
and<CR>
in certain mode only after some pair is registered in that mode.
- FEATURE: Implement
MiniSessions.select()
to select session interactively and perform action on it. - FEATURE: Implement
config.hooks
to execute hook functions before and after successful action. - BREAKING: All feedback about incorrect behavior is now an error instead of message notifications.
- Allow
config.header
andconfig.footer
be any value, which will be converted to string viatostring()
. - Update query logic to not allow queries which result into no items.
- Add
<C-n>
and<C-p>
to default mappings.
- BREAKING: change default icon for
MiniStatusline.section_diagnostics()
from ﯭ to due to former having issues in some terminal emulators.
- FEATURE: Implement
config.search_method
. - FEATURE: Implement custom surroundings via
config.custom_surroundings
. - FEATURE: Implement
MiniSurround.user_input()
. - BREAKING: Deprecate
config.funname_pattern
option in favor of manually modifyingf
surrounding. - BREAKING: Always move cursor to the right of left surrounding in
add()
,delete()
, andreplace()
(instead of moving only if it was on the same line as left surrounding). - Update process of getting user input: allow
<C-c>
to cancel and make empty string a valid input.
- FEATURE: Implement
config.tabpage_section
. - BREAKING: Show listed buffers also in case of multiple tabpages (instead of using builtin behavior).
- Show quickfix/loclist buffers with special
*quickfix*
label.
- Update all modules to have annotations formatted for 'mini.doc'.
- Current word under cursor now can be highlighted differently.
Introduction of new module.
Introduction of new module.
- Implement
MiniStarter.set_query()
and make<Esc>
mapping for resetting query.
- Use new
Diagnostic*
highlight groups in Neovim 0.6.0.
- Respect tab indentation (#20).
Introduction of new module.
- Implement pair registration with custom mapping functions. More detailed:
- Implement
MiniPairs.map()
,MiniPairs.map_buf()
,MiniPairs.unmap()
,MiniPairs.unmap_buf()
to (un)make mappings for pairs which automatically register them for<BS>
and<CR>
. Note, that this has a minor break of previous behavior: nowMiniPairs.bs()
andMiniPairs.cr()
don't have any input argument. But default behavior didn't change. - Allow setting global pair mappings inside
config
ofMiniPairs.setup()
.
- Implement
Introduction of new module.
Introduction of new module.
- Implement new section
MiniStatusline.section_searchcount()
. - Update
section_diagnostics
to usevim.diagnostic
in Neovim 0.6.0.
- Initial stable version.