folke / noice.nvim

💥 Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu.
Apache License 2.0
3.95k stars 88 forks source link

bug: vim.fn.input() now goes to cmdline_input, and breaks #856

Closed Anaritus closed 2 weeks ago

Anaritus commented 3 weeks ago

Did you check docs and existing issues?

Neovim version (nvim -v)

v0.10.0

Operating system/version

MacOS Ventura 13.6.6

Describe the bug

There is this function called vim.fn.input(), which prompts user to input smth. I believe commit 07e8f9c broke multiline prompts. The reason for that is nui sending prompt as is to nvim_buf_set_lines(), which does not accept lines with newlines.

Discovered since Obsidian.nvim plugin uses vim.fn.input for confirmation.

Steps To Reproduce

  1. Download clean version of plugin
  2. type `:lua vim.fn.input('hello\nworld')
  3. Enjoy!

Expected Behavior

two line prompt looking like

hello
world

Repro

-- DO NOT change the paths and don't remove the colorscheme
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath, })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  "folke/tokyonight.nvim",
  "folke/noice.nvim",
  -- add any other plugins here
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

vim.cmd.colorscheme("tokyonight")
-- add anything else here
folke commented 2 weeks ago

Fixed!

Anaritus commented 2 weeks ago

omg thank you!!