27 KiB
Version 0.13.0.9000
- Stop official support of Neovim 0.7.
- Update help files to use code blocks with language annotation, as it results in a better code highlighting. Implies enabled tree-sitter highlighting in 'help' filetype:
- It is default in Neovim>=0.10.
- Tree-sitter parser is built-in in Neovim 0.9.x, needs manual enabling via
vim.treesitter.start(). - Has visual regressions on Neovim 0.8.0 and 0.8.1 without enabled tree-sitter (code blocks are highlighted as normal text). Use 0.8.2 or newer.
- Universally prefer 'mini.icons' module over 'nvim-tree/nvim-web-devicons'.
mini.doc
- BREAKING FEATURE: update
afterlines_to_code()to result into Lua code block in help file by using>luaat the start instead of>. NOTE: users need enabledhelptree-sitter parser (which is default on Neovim>=0.9) for code blocks to have proper highlighting.
mini.extra
- FEATURE: update
pickers.oldfiles()to havecurrent_diroption which iftrueshows files only from picker's working directory. By @abeldekat, PR #997. - FEATURE: make
git_hunks,list, andlsppickers show icons. Scopesdocument_symbolandworkspace_symbolinlsppicker show icon based on LSP kind (requires set up 'mini.icons'), others - based on path data. - BREAKING FEATURE: use "│" as line/position separator instead of ":". This aligns with changes in 'mini.pick' and makes line/position more easily visible.
mini.hipatterns
- BREAKING FEATURE: update
compute_hex_color_group()to compute based on combination ofhex_colorandstyle, opposed to justhex_color. This allows simultaneous usage of several styles in user's custom highlighters.
mini.hues
- FEATURE: implement
apply_palette()(to complimentmake_palette()) providing a way to tweak applied palette before applying it.
mini.files
- FEATURE: prefer using 'mini.icons' as icon provider.
mini.icons
- Introduction of a new module.
mini.misc
- FEATURE: implement
setup_termbg_sync()to set up terminal background synchronization (removes possible "frame" around current Neovim instance).
mini.pick
- FEATURE: prefer using 'mini.icons' as icon provider.
- BREAKING: encoding line or position in string items has changed:
- Use "\0" (null character; use "\000" form if it is in a string before digit) instead of ":" as delimiter. This makes it work with files similar to ":" position encoding (like "time_12:34:56"). This only matters for custom sources which provide line or position in string items.
- Update
default_show()to display "│" character instead of "\0" in item's string representation (previously was ":"). In particular, this changes how line/position is displayed ingrepandgrep_livebuilt-in pickers. This change was done because "│" is more visible as separator.
mini.starter
- BREAKING: change filetype of Starter buffer from 'starter' to 'ministarter'. This is a more robust value and more aligned with other modules.
mini.statusline
- BREAKING FEATURE: update
section_fileinfo()to show non-empty filetype even in not normal buffers (like plugin's scratch buffers, help, quickfix, etc.). Previously it showed nothing, which was a mistake as filetype can be a valuable information. - FEATURE: prefer using 'mini.icons' as icon provider for
section_fileinfo().
mini.surround
- BREAKING FEATURE: adding surrounding in linewise mode now also ignores trailing whitespace on the last line (same as it ignores indent on the first line).
mini.tabline
- FEATURE: prefer using 'mini.icons' as icon provider.
Version 0.13.0
mini.comment
-
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 explicitly. In particular:
-
Default
options.pad_comment_parts = truenow 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 */. -
Detection of whether consecutive lines are commented or not does not depend on whitespace in comment parts. Uncommenting is first attempted with exact comment parts and falls back on trying its trimmed parts.
Example of toggling comment on single line with
/* %s */'commentstring' value:/* this is commented */->this is commented./*this is also commented */->this is also commented(notice trailing space).
-
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.
mini.deps
- FEATURE: add
MiniDepsMsgBreakinghighlight group for messages indicating a breaking change in a conventional commit style.
mini.diff
- Introduction of a new module.
mini.files
- FEATURE: add new
MiniFilesExplorerOpenandMiniFilesExplorerCloseevents.
mini.git
- Introduction of a new module.
mini.hues
- BREAKING FEATURE: update some highlight groups for better usability:
DiffChangeandDiffText- make changed diff lines have colored background.Folded- make folds differ fromCursorLine.QuickFixLine- make current quickfix item differ fromCursorLine.
mini.map
- FEATURE: add
gen_integration.diff()which highlights general diff hunks from 'mini.diff'.
mini.pick
- 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.
mini.starter
- Explicitly block all events in
open()during startup for a better performance.
mini.statusline
- BREAKING:
section_diagnostics()now depends only on defined diagnostic. This means:- Something is shown only if there is any diagnostic actually present in the buffer. No diagnostic entries - nothing is shown. Previously it did not show if there was no LSP servers attached (as initially diagnostics came only from LSP) or buffer was not normal.
- Fallback icon is "Diag" instead of "LSP".
- FEATURE:
section_diagnostics()now supportssignstable option to customize signs for severity levels. - BREAKING FEATURE:
section_git()now prefers using data from 'mini.git' with fallback on pure HEAD data from 'lewis6991/gistigns.nvim'. - FEATURE: add
section_diff()to show data from 'mini.diff' with fallback on diff data from 'lewis6991/gistigns.nvim'. - FEATURE: add
section_lsp()to show indicator of LSP servers attached to the buffer. - BREAKING FEATURE: update default active content:
- Add
section_diff()(shows diff data near icon) following refactor ofsection_git(). - Add
section_lsp()(shows number of attached LSP servers near icon) following refactor ofsection_diagnostics().
- Add
mini.tabline
- FEATURE: Implement
config.formatfor custom label formatting.
mini.test
- 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.
Version 0.12.0
mini.basics
- BREAKING: Remove
<C-z>mapping, as it is more useful in most terminal emulators for suspending Neovim process (to later resume withfgcommand). 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_uiis set. This prevents showing^Iinstead of a tab and actual value comes from Neovim's default. - FEATURE: Set
termguicolorsonly on Neovim<0.10, as later versions should have it on by default (if terminal emulator supports it).
mini.comment
- FEATURE: Hooks are now called with data about commenting action.
mini.deps
Introduction of a new module.
mini.doc
- BREAKING: Stop using
:echoto display messages and warnings in favor ofvim.notify(). - BREAKING: Update default
write_posthook to not display current time in success message. - Update to include space before
~in generated section headings.
mini.files
- FEATURE: Update
go_in()to haveclose_on_fileoption. - Show warning if action is set to override existing path.
mini.hues
- BREAKING FEATURE: Update verbatim text (
@text.literaland@markup.raw) color to be distinctive instead of dimmed. - FEATURE: Add support for new standard tree-sitter captures on Neovim>=0.10 (see https://github.com/neovim/neovim/pull/27067).
mini.misc
- Update
bench_time()to usevim.loop.hrtime()(as better designed for benchmarking) instead ofvim.loop.gettimeofday().
mini.notify
Introduction of a new module.
mini.pick
- FEATURE: Implement
window.prompt_cursorandwindow.prompt_prefixconfig options. - FEATURE: Update
builtin.help()to use tree-sitter highlighting (if there is any).
mini.sessions
- FEATURE: Update
read()to firstwrite()current session (if there is any).
mini.starter
- FEATURE: Add
sections.pick()with 'mini.pick' pickers.
mini.statusline
- BREAKING FEATURE: Add
search_countsection to default active content.
mini.visits
Introduction of a new module.
Version 0.11.0
mini.base16
- BREAKING: Stop supporting deprecated 'HiPhish/nvim-ts-rainbow2'.
mini.bufremove
- BREAKING FEATURE: Applying
delete()andwipeout()withoutforcein a modified buffer now asks for confirmation instead of declining and showing message.
mini.clue
- FEATURE:
config.window.confignow can be callable returning window config.
mini.comment
- FEATURE: Implement
config.mappings.comment_visualto configure mapped keys in Visual mode.
mini.completion
- FEATURE: Start adding
Cflag toshortmessoption on Neovim>=0.9. By @yamin-shihab, PR #554.
mini.extra
Introduction of a new module.
mini.files
- 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
MiniFilesCursorLinehighlight group.
mini.hipatterns
- FEATURE: Allow
patternin highlighter definitions to be an array to highlight several patterns under the same highlighter name. - FEATURE: Implement
extmark_optsin highlighter definitions for a more control over extmarks placed at matches. - BREAKING: Field
priorityin 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.
mini.hues
- BREAKING: Stop supporting deprecated 'HiPhish/nvim-ts-rainbow2'.
mini.map
- FEATURE: Implement
config.window.zindexto configure z-index of map window.
mini.misc
- FEATURE:
setup_auto_root()andfind_root()now havefallbackargument to be applied when no root is found withvim.fn.find().
mini.pick
Introduction of a new module.
mini.starter
- FEATURE:
show_pathinsections.recent_files()can now be callable for more control on how full path is displayed.
mini.test
- 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:redrawprior to computing screenshot. Can be disabled by newopts.redrawargument. - 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_linesoption allowing to ignore specified lines during screenshot compare.
Version 0.10.0
mini.ai
- FEATURE: Allow
vis_modefield in custom texobject region to force Visual mode with which textobject is selected.
mini.animate
- FEATURE: Add
MiniAnimateNormalFloathighlight group to tweak highlighting ofopenandcloseanimations.
mini.base16
- FEATURE: Add 'HiPhish/rainbow-delimiters.nvim' integration.
mini.basics
- BREAKING: Remove
<C-w>mapping in Terminal mode, as it is more useful inside terminal emulator itself.
mini.bracketed
- FEATURE: Add
add_to_jumplistoption to relevant targets (which move cursor and don't already add to jumplist).
mini.bufremove
- BREAKING: Create normal buffer instead of scratch when there is no reasonable target to focus (#394).
mini.clue
Introduction of a new module.
mini.files
Introduction of a new module.
mini.hues
- FEATURE: Add 'HiPhish/rainbow-delimiters.nvim' integration.
mini.jump2d
- FEATURE: Add
gen_union_spotter()to allow combining separate spotters into one.
mini.operators
Introduction of a new module.
mini.pairs
- FEATURE: Allow
falseinconfig.mappingsto not map the key.
mini.surround
- 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.
Version 0.9.0
- 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.keymapto deal with mappings. Stop exporting functions only related to mappings. - Add 'randomhue' color scheme.
mini.base16
- 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'.
mini.basics
- Add dot-repeat support for adding empty lines (
goandgOmappings).
mini.colors
Introduction of a new module.
mini.comment
- FEATURE: Use tree-sitter information about locally active language to infer 'commentstring' option value.
- FEATURE: Add
options.custom_commentstringoption for a more granular customization of comment structure. - FEATURE: Add
get_commentstring()function representing built-in logic of computing relevant 'commentstring'.
mini.hipatterns
Introduction of a new module.
mini.hues
Introduction of a new module.
Version 0.8.0
- 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
mini.bracketed
Introduction of a new module.
mini.comment
- FEATURE: Add
options.start_of_lineoption which controls whether to recognize as comment only lines without indent. - FEATURE: Add
options.ignore_blank_lineoption which controls whether to ignore blank lines. - FEATURE: Add
options.pad_comment_partsoption which controls whether to ensure single space pad for comment leaders.
mini.doc
- FEATURE: Add
config.hooks.write_prehook to be executed before writing to a file.
mini.indentscope
- FEATURE: Add
MiniIndentscopeSymbolOffhighlight group to be used if scope's indent is not multiple of 'shiftwidth'. - FEATURE: Add
draw.priorityoption to control priority of scope line draw.
mini.jump2d
- FEATURE: Add
view.n_steps_aheadoption which controls how many steps ahead to show. Appearance is controlled by newMiniJump2dSpotAheadhighlight group. - FEATURE: Add
view.dimoption which controls whether to dim lines with at least one jump spot. Appearance is controlled by newMiniJump2dDimhighlight group. - FEATURE: Add
MiniJump2dSpotUniquehighlight group to be used for spots with unique label for next step.
mini.pairs
- FEATURE: Both
MiniPairs.br()andMiniPairs.cr()can now take a key which will be used instead of default<BS>and<CR>.
mini.sessions
- FEATURE:
setup()now creates global directory at pathconfig.directoryif it doesn't exist. - All actions now keep list of detected sessions up to date.
mini.splitjoin
Introduction of a new module.
mini.surround
- FEATURE: Add
respect_selection_typeoption 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.
Version 0.7.0
- Start dual distribution. Every module is now distributed both as part of 'mini.nvim' library and as standalone plugin (in separate git repository).
mini.ai
- BREAKING FEATURE: In
MiniAi.gen_spec.argument()optionseparators(plural; array of characters) is soft deprecated in favor ofseparator(singular; Lua pattern) option.
mini.animate
Introduction of new module.
mini.basics
Introduction of a new module.
mini.completion
- BREAKING:
MiniCompletion.config.window_dimensionsis renamed toMiniCompletion.config.windowto be able to handle more general configuration. - FEATURE: Add
MiniCompletion.config.window.info.borderandMiniCompletion.config.window.signature.borderwhich can be used to define border of info and signature floating windows respectively.
mini.indentscope
- BREAKING:
MiniIndentscopePrefixis 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),MiniIndentscopePrefixis no longer needed and no overshadowing is done. - BREAKING:
MiniIndentscope.gen_animationis 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.
mini.misc
- 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.
mini.move
Introduction of new module.
Version 0.6.0
- Stop official support of Neovim 0.5.
- Make all messages use colors and not cause hit-enter-prompt.
mini.align
Introduction of new module.
mini.base16
- FEATURE: Add support for many plugin integrations.
- FEATURE: Implement
MiniBase16.config.pluginsfor configuring plugin integrations. - BREAKING: Change some 'mini.nvim' highlights:
MiniCompletionActiveParameternow highlights with background instead of underline.MiniJump2dSpotnow explicitly defined to use plugin's palette.MiniStarterItemPrefixandMiniStarterQueryare now bold for better visibility.
- BREAKING: Update highlight for changed git diff to be more visible and to comply more with general guidelines.
mini.jump
- BREAKING: Allow cursor to be positioned past the end of previous/current line (#113).
mini.map
Introduction of new module.
mini.starter
- 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.
mini.surround
- 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:
bfor "brackets". Input - any of balanced(),[]{}. Output -().qfor "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_lastandconfig.mappings.suffix_nextrespectively. 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_specwith generators of common surrounding specifications (likeMiniSurround.gen_spec.input.treesitterfor tree-sitter based input surrounding).
Version 0.5.0
- Update all tests to use new 'mini.test' module.
- FEATURE: Implement buffer local configuration. This is done with
vim.b.mini*_configbuffer variables. - Add new
minicyancolor scheme.
mini.ai
Introduction of new module.
mini.comment
- FEATURE: Now hooks can be used to terminate further actions by returning
false(#108).
mini.indentscope
- BREAKING: Soft deprecate
vim.b.miniindentscope_optionsin favor of usingoptionsfield ofminiindentscope_config.
mini.sessions
- FEATURE: Hooks are now called with active session data as argument.
mini.starter
- 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.contentis deprecated. UseMiniStarter.get_content(). - All functions dealing with Starter buffer now have
buf_idas argument (no breaking behavior).
- BREAKING:
mini.statusline
- FEATURE: Implement
config.use_iconswhich controls whether to use icons by default.
mini.test
Introduction of new module.
mini.trailspace
- FEATURE: Implement
MiniTrailspace.trim_last_lines().
Version 0.4.0
- Update all modules to supply mapping description for Neovim>=0.7.
- Add new module 'mini.jump2d'.
- Cover all modules with extensive tests.
mini.comment
- FEATURE: Implement
config.hookswithpreandposthooks (executed before and after successful commenting). Fixes #50, #59.
mini.completion
- Implement support for
additionalTextEdits(issue #61).
mini.jump
- 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_delayin favor ofconfig.delay.highlight. - Update process of querying target symbol: show help message after delay, allow
<C-c>to stop selecting target.
mini.jump2d
Introduction of new module.
mini.pairs
- Create mappings for
<BS>and<CR>in certain mode only after some pair is registered in that mode.
mini.sessions
- FEATURE: Implement
MiniSessions.select()to select session interactively and perform action on it. - FEATURE: Implement
config.hooksto execute hook functions before and after successful action. - BREAKING: All feedback about incorrect behavior is now an error instead of message notifications.
mini.starter
- Allow
config.headerandconfig.footerbe 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.
mini.statusline
- BREAKING: change default icon for
MiniStatusline.section_diagnostics()from ﯭ to due to former having issues in some terminal emulators.
mini.surround
- FEATURE: Implement
config.search_method. - FEATURE: Implement custom surroundings via
config.custom_surroundings. - FEATURE: Implement
MiniSurround.user_input(). - BREAKING: Deprecate
config.funname_patternoption in favor of manually modifyingfsurrounding. - 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.
mini.tabline
- 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.
Version 0.3.0
- Update all modules to have annotations formatted for 'mini.doc'.
mini.cursorword
- Current word under cursor now can be highlighted differently.
mini.doc
Introduction of new module.
mini.indentscope
Introduction of new module.
mini.starter
- Implement
MiniStarter.set_query()and make<Esc>mapping for resetting query.
Version 0.2.0
mini.base16
- Use new
Diagnostic*highlight groups in Neovim 0.6.0.
mini.comment
- Respect tab indentation (#20).
mini.jump
Introduction of new module.
mini.pairs
- 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
configofMiniPairs.setup().
- Implement
mini.sessions
Introduction of new module.
mini.starter
Introduction of new module.
mini.statusline
- Implement new section
MiniStatusline.section_searchcount(). - Update
section_diagnosticsto usevim.diagnosticin Neovim 0.6.0.
Version 0.1.0
- Initial stable version.