A floating `vim.ui.input` buffer that auto-resizes to fit its contents.
Lua 100%

README.md

multinput.nvim #

An attempt at creating a vim.ui.input that wraps its context in an auto-resizing buffer.

Installation #

Install multinput.nvim using your favorite plugin manager.

lazy.nvim:

{
  'r0nsha/multinput.nvim',
  opts = {
    -- Your custom configuration goes here
  }
}

packer.nvim:

use({
  'r0nsha/multinput.nvim',
  config = function()
    require('multinput').setup({
      -- Your custom configuration goes here
    })
  end
})

Configuration #

Here are the default configuration options:

require('multinput').setup({
  opts = {
    numbers = "multiline",        -- "always" | "multiline" | "never"
                                  -- "always" will always show line numbers
                                  -- "multiline" will only show line numbers if the buffer's height is > 1
                                  -- "never" will never show line numbers
  },
  padding = 5,                    -- How much padding will be added to the end of the buffer
  width = { min = 20, max = 60 }, -- Controls the width limits of the buffer
  height = { min = 1, max = 6 },  -- Controls the height limits of the buffer
    win = {
      title = "Input: ",
      style = "minimal",
      focusable = true,
      relative = "cursor",
      col = -1,
      height = 1,
  },
})

Mappings #

Mode Key Description
n, i, v <cr> Confirms the input
i <a-cr> Inserts a newline in normal mode
n <esc>/q Closes the buffer

Contributing #

Contributions are always welcome! I'm no neovim expert, so if you find a bug or have a feature request, you're welcome to open an issue or submit a pull request.