1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 06:10:05 +08:00
SpaceVim/bundle/nui.nvim/lua/nui/input
2023-05-30 21:09:18 +08:00
..
init.lua feat(neotree): add neotree support 2023-05-30 21:09:18 +08:00
README.md feat(neotree): add neotree support 2023-05-30 21:09:18 +08:00

Input

Input is an abstraction layer on top of Popup.

It uses prompt buffer (check :h prompt-buffer) for its popup window.

local Input = require("nui.input")
local event = require("nui.utils.autocmd").event

local popup_options = {
  relative = "cursor",
  position = {
    row = 1,
    col = 0,
  },
  size = 20,
  border = {
    style = "rounded",
    text = {
      top = "[Input]",
      top_align = "left",
    },
  },
  win_options = {
    winhighlight = "Normal:Normal",
  },
}

local input = Input(popup_options, {
  prompt = "> ",
  default_value = "42",
  on_close = function()
    print("Input closed!")
  end,
  on_submit = function(value)
    print("Value submitted: ", value)
  end,
  on_change = function(value)
    print("Value changed: ", value)
  end,
})

If you provide the on_change function, it'll be run everytime value changes.

Pressing <CR> runs the on_submit callback function and closes the window. Pressing <C-c> runs the on_close callback function and closes the window.

Of course, you can override the default keymaps and add more. For example:

-- unmount input by pressing `<Esc>` in normal mode
input:map("n", "<Esc>", function()
  input:unmount()
end, { noremap = true })

You can manipulate the assocciated buffer and window using the split.bufnr and split.winid properties.

NOTE: the first argument accepts options for nui.popup component.

Options

prompt

Type: string or NuiText

Prefix in the input.

default_value

Type: string

Default value placed in the input on mount

on_close

Callback function, called when input is closed.

on_submit

Callback function, called when input value is submitted.

on_change

Callback function, called when input value is changed.

disable_cursor_position_patch

By default, nui.input will try to make sure the cursor on parent window is not moved after input is submitted/closed. If you want to disable this behavior for some reason, you can set disable_cursor_position_patch to true.

Methods

Methods from nui.popup are also available for nui.input.

Wiki Page

You can find additional documentation/examples/guides/tips-n-tricks in nui.input wiki page.