github nvim-mini/mini.nvim v0.17.0
Version 0.17.0

21 hours ago

There are following change types:

  • Evolve - change in previously intended functionality while adding a new one.
  • Refine - change in previously intended functionality without adding new one. This is usually described as a "breaking change", but used here in a sense that it might break user's expectations about existing functionality.
  • Expand - adding new functionality without affecting existing ones. This is essentially new features.

Version 0.17.0

All

Evolve

  • Move repository hosting from personal 'echasnovski' GitHub account to the 'nvim-mini' organization. All git pull and git clone should be automatically redirected from previous to new locations without breaking user configurations. Yet updating source links to point to new locations (like 'echasnovski/mini.nvim' -> 'nvim-mini/mini.nvim' and standalone repos) is recommended.

    This change is made to improve long term project stability. See more details here.

  • Start setting custom Neovim method implementation during setup() (if module provides one). This is usually the expected behavior for majority of use cases and should improve "out of the box" experience. Modules should still export a function to manually adjust the implementation.

    It is a breaking change only if the implementation was not explicitly used. Can still be done if set or restored after calling module's setup().

    Affected modules:

    • 'mini.notify' sets vim.notify.
    • 'mini.pick' sets vim.ui.select.

Refine

  • Stop official support of Neovim 0.8.

Expand

  • Add new bundled color schemes based on 'mini.hues':
    • miniwinter: "icy winter" palette with azure background.
    • minispring: "blooming spring" palette with green background.
    • minisummer: "hot summer" palette with brown/yellow background.
    • miniautumn: "cooling autumn" palette with purple background.

mini.ai

Refine

  • Update gen_spec.treesitter() to have use_nvim_treesitter = false as default option value (instead of true). It used to implement more advanced behavior, but as built-in vim.treesitter is capable enough, there is no need in extra dependency. The option will be removed after the release.

Expand

  • Add gen_spec.user_prompt that acts the same as ? built-in textobject. It can be used for using this textobject under another identifier.

mini.basics

Refine

  • Change default value of options.win_border to be 'auto'.

Expand

  • Update options.win_border to allow value 'auto' which infers target 'fillchars' values from 'winborder' option.

mini.colors

  • Update add_transparency() color scheme method to adjust more groups:
    • XxxMsg groups in case of opts.general = true.
    • DiagnosticSignXxx groups in case of opts.statuscolumn = true.

mini.completion

Evolve

  • Update setup() to remove "t" flag from 'complete' option (if not previously set and fallback action is default) as it leads to visible lags.

Expand

  • Add MiniCompletionWindowOpen and MiniCompletionWindowUpdate events.

  • Add support for highlighting LSP item label via setting abbr_hlgroup field as part of an LSP item (like inside config.lsp_completion.process_items).

mini.clue

Evolve

  • Use current query clue (if not immediately after trigger) as a window title instead of showing keys verbatim. This shows extra context when navigating through mappings.

Expand

  • Add gen_clues.square_brackets to generate clues for [ and ] keys. By @TheLeoP, PR #1937.

  • Ensure triggers for 'mini.starter' buffers, but not override its query updaters (like for "g" and "z" triggers).

mini.cmdline

  • Introduction of a new module.

mini.diff

Expand

  • Add support for working with files containing BOM bytes.

mini.doc

Refine

  • Update default write_pre hook to remove === and --- delimiters from the top of the file to better comply with :h local-additions.

mini.extra

Expand

  • Add pickers.colorschemes picker. By @pkazmier, PR #1789.

  • Add workspace_symbol_live scope to pickers.lsp picker. It allows searching for LSP symbols in the workspace with live feedback. Relates to workspace_symbol scope similarly to how MiniPick.builtin.grep_live() relates to MiniPick.builtin.grep().

  • Add <C-e> mapping for pickers.history picker to edit commands or searches in cmdline. By @TheLeoP, PR #1960.

mini.files

Evolve

  • Allow appending / to a file name to mean "delete file" + "create directory". This is useful when initial intention was to create a directory but there was no / at the end.

Refine

  • Ensure preview window is never hidden, even if cursor is on the line for a not (yet) existing file system entry. This reduces flickering of preview window when creating new files in Insert mode.

Expand

  • Add config.content.highlight to customize how file system entry is highlighted. Defaults to a new default_highlight() function.

mini.hues

Evolve

  • Add auto adjusting of highlight groups based on certain events. It can be disabled via new autoadjust config setting or opts.autoadjust in apply_palette(). Affected groups:
    • MsgSeparator depends on msgsep flag of 'fillchars' option.
    • Pmenu depends on 'pumborder' option value (on Neovim>=0.12).

Refine

  • Make black (0 and 8) and white (7 and 15) colors for built-in terminal different from regular background and foreground. This improves color coverage and does not affect default uncolored text (it is highlighted as Normal).

Expand

  • Add get_palette() function.

mini.jump

Expand

  • Trigger dedicated events during steps of jumping life cycle. See :h MiniJump-events.

mini.jump2d

Evolve

  • Update builtin_opts.word_start to use built-in notion of "keyword" (see :h 'iskeyword') when computing word start.

Refine

  • Move gen_xxx_spotter into separate gen_spotter table for consistency with other modules:

    • gen_pattern_spotter -> gen_spotter.pattern
    • gen_union_spotter -> gen_spotter.union

    The gen_xxx_spotter functions will work (with warning) until at least next release.

  • Not focusable windows are now ignored when computing jump spots.

Expand

  • Add gen_spotter.vimpattern() that can generate spotter based on Vimscript (not Lua) pattern.

mini.map

Expand

  • Update gen_integration.builtin_search() to react to change of v:hlsearch.

mini.misc

Expand

  • Update zoom() to return whether current buffer is zoomed in. By @loichyan, PR #1954.

  • Add log_add() and related functions (log_get(), log_show(), log_clear()) to work with a special in-memory log array. Useful when debugging Lua code (instead of print()).

mini.pick

Evolve

  • Pickers grep and grep_live with rg tool now respect Neovim's 'ignorecase' and 'smartcase' options. This forces corresponding case matching flag (thus overriding global configuration) in favor of a more consistent user experience.

Expand

  • "Paste" action now supports special registers: <C-w> (word at cursor), <C-a> (WORD at cursor), <C-l> (line at cursor), <C-f> (filename at cursor).

  • Key query process now respects most language mappings. By @yehorb, PR #2026.

mini.sessions

Refine

  • Update read() to write currently read session only if MiniSessions.config.autowrite is set to true.

mini.surround

Evolve

  • Stop creating update_n_lines mapping: it occupies "mapping real estate" while being rarely needed and straightforward to create manually using MiniSurround.update_n_lines().

  • Automatically map s key to <Nop> if the key is not already mapped and any of created mappings starts with it. This prevents accidental trigger of built-in s if there is a long delay between pressing "s" and the next key.

Refine

  • Update gen_spec.inpuf.treesitter() to have use_nvim_treesitter = false as default option value (instead of true). It used to implement more advanced behavior, but as built-in vim.treesitter is capable enough, there is no need in extra dependency. The option will be removed after the release.

mini.test

Refine

  • Soft deprecate ignore_lines option in expect.reference_screenshot() in favor of more capable ignore_text and ignore_attr options. For example, ignore_lines = { 1 } is the same as supplying both ignore_text = { 1 } and ignore_attr = { 1 }.

    It will work at least until the next release, after which its support will be removed. Sorry for the inconvenience.

Expand

  • Update expect.reference_screenshot() to support separate ignoring of text and attribute screenshot data via new ignore_text and ignore_attr options.

Don't miss a new mini.nvim release

NewReleases is sending notifications on new releases.