Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

mini.input

Get user input

See more details in Features and Documentation.


⦿ This is a part of mini.nvim library. Please use this link if you want to mention this module.

⦿ All contributions (issues, pull requests, discussions, etc.) are done inside of 'mini.nvim'.

⦿ See whole library documentation to learn about general design principles, disable/configuration recipes, and more.

⦿ See MiniMax for a full config example that uses this module.


If you want to help this project grow but don't know where to start, check out contributing guides of 'mini.nvim' or leave a Github star for 'mini.nvim' project and/or any its standalone Git repositories.

Demo

demo-input.mp4

Note: This demo uses custom vim.notify from mini.notify.

Features

  • Get user input with fully customizable key and view handling.

  • Built-in configurable views as floating window, statusline/tabline/winbar, virtual line/text.

  • Implementation is non-blocking but waits to return the input. It also works in any mode without requiring mode change. See :h MiniInput-lifecycle.

  • vim.ui.input() implementation. To adjust, use MiniInput.ui_input() or save-restore vim.ui.input manually after calling MiniInput.setup().

For more information see these parts of help:

  • :h MiniInput.get()
  • :h MiniInput.default_key()
  • :h MiniInput-state
  • :h MiniInput-examples
  • :h MiniInput-in-other-plugins (for plugin authors)

Installation

This plugin can be installed as part of 'mini.nvim' library (recommended) or as a standalone Git repository.

There are two branches to install from:

  • main (default, recommended) will have latest development version of plugin. All changes since last stable release should be perceived as being in beta testing phase (meaning they already passed alpha-testing and are moderately settled).
  • stable will be updated only upon releases with code tested during public beta-testing phase in main branch.

Here are code snippets for some common installation methods (use only one):

(Recommended) With vim.pack (on Neovim 0.12 and newer)

Full library

Follow 'mini.nvim' installation.

Standalone plugin

Main branch:

vim.pack.add({ 'https://github.com/nvim-mini/mini.input' })

Stable branch:

vim.pack.add({
  { src = 'https://github.com/nvim-mini/mini.input', version = 'stable' },
})
With mini.deps (before Neovim 0.12)

Full library

Follow recommended 'mini.deps' installation.

Standalone plugin:

Main branch:

add('nvim-mini/mini.input')

Stable branch:

add({ source = 'nvim-mini/mini.input', checkout = 'stable' })
With folke/lazy.nvim

Full library

Follow 'mini.nvim' installation.

Standalone plugin

Main branch:

{ 'nvim-mini/mini.input', version = false },

Stable branch:

{ 'nvim-mini/mini.input', version = '*' },

Important: don't forget to call require('mini.input').setup() to enable its functionality.

Note: if you are on Windows, there might be problems with too long file paths (like error: unable to create file <some file name>: Filename too long). Try doing one of the following:

  • Enable corresponding git global config value: git config --system core.longpaths true. Then try to reinstall.
  • Install plugin in other place with shorter path.

Default config

-- No need to copy this inside `setup()`. Will be used automatically.
{
  -- Functions that control input lifecycle
  handlers = {
    -- Compute completion candidates
    complete = nil,

    -- Compute highlighting of current input
    highlight = nil,

    -- Handle input start, every key press, and input end
    key = nil,

    -- Show current input state
    view = nil,
  },

  -- Default input scope: cursor/line/buffer/window/tabpage/editor/project
  scope = 'editor',
}

Similar plugins

About

Get user input. Part of 'mini.nvim' library.

Topics

Resources

Stars

15 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages