mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 18:55:14 -07:00
Merge #9297 from justinmk/confirm-dialog
This commit is contained in:
commit
715fdfee1e
@ -37,6 +37,7 @@ Functions ~
|
||||
*file_readable()* Obsolete name for |filereadable()|.
|
||||
*highlight_exists()* Obsolete name for |hlexists()|.
|
||||
*highlightID()* Obsolete name for |hlID()|.
|
||||
*inputdialog()* Use |input()| instead.
|
||||
*jobclose()* Obsolete name for |chanclose()|
|
||||
*jobsend()* Obsolete name for |chansend()|
|
||||
*last_buffer_nr()* Obsolete name for bufnr("$").
|
||||
|
@ -2137,8 +2137,6 @@ index({list}, {expr} [, {start} [, {ic}]])
|
||||
Number index in {list} where {expr} appears
|
||||
input({prompt} [, {text} [, {completion}]])
|
||||
String get input from the user
|
||||
inputdialog({prompt} [, {text} [, {completion}]])
|
||||
String like input() but in a GUI dialog
|
||||
inputlist({textlist}) Number let the user pick from a choice list
|
||||
inputrestore() Number restore typeahead
|
||||
inputsave() Number save and clear typeahead
|
||||
@ -4915,20 +4913,6 @@ input({opts})
|
||||
: call inputrestore()
|
||||
:endfunction
|
||||
|
||||
inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()*
|
||||
inputdialog({opts})
|
||||
Like |input()|, but when the GUI is running and text dialogs
|
||||
are supported, a dialog window pops up to input the text.
|
||||
Example: >
|
||||
:let n = inputdialog("value for shiftwidth", shiftwidth())
|
||||
:if n != ""
|
||||
: let &sw = n
|
||||
:endif
|
||||
< When the dialog is cancelled {cancelreturn} is returned. When
|
||||
omitted an empty string is returned.
|
||||
Hitting <Enter> works like pressing the OK button. Hitting
|
||||
<Esc> works like pressing the Cancel button.
|
||||
|
||||
inputlist({textlist}) *inputlist()*
|
||||
{textlist} must be a |List| of strings. This |List| is
|
||||
displayed, one string per line. The user will be prompted to
|
||||
|
@ -517,14 +517,9 @@ m *+xim* X input method |xim|
|
||||
:silent! /^begin
|
||||
:if v:errmsg != ""
|
||||
: ... pattern was not found
|
||||
< ":silent" will also avoid the hit-enter prompt. When
|
||||
using this for an external command, this may cause the
|
||||
screen to be messed up. Use |CTRL-L| to clean it up
|
||||
then.
|
||||
":silent menu ..." defines a menu that will not echo a
|
||||
Command-line command. The command will still produce
|
||||
messages though. Use ":silent" in the command itself
|
||||
to avoid that: ":silent menu .... :silent command".
|
||||
< ":silent" also skips the hit-enter prompt.
|
||||
Dialogs that prompt for user input (|confirm()|,
|
||||
'swapfile', …) are never silent.
|
||||
|
||||
*:uns* *:unsilent*
|
||||
:uns[ilent] {command} Execute {command} not silently. Only makes a
|
||||
|
@ -2825,7 +2825,6 @@ do_dialog (
|
||||
Ex command */
|
||||
)
|
||||
{
|
||||
int oldState;
|
||||
int retval = 0;
|
||||
char_u *hotkeys;
|
||||
int c;
|
||||
@ -2838,7 +2837,10 @@ do_dialog (
|
||||
}
|
||||
|
||||
|
||||
oldState = State;
|
||||
int save_msg_silent = msg_silent;
|
||||
int oldState = State;
|
||||
|
||||
msg_silent = 0; // If dialog prompts for input, user needs to see it! #8788
|
||||
State = CONFIRM;
|
||||
setmouse();
|
||||
|
||||
@ -2891,6 +2893,7 @@ do_dialog (
|
||||
|
||||
xfree(hotkeys);
|
||||
|
||||
msg_silent = save_msg_silent;
|
||||
State = oldState;
|
||||
setmouse();
|
||||
--no_wait_return;
|
||||
|
@ -8,6 +8,7 @@ local clear = helpers.clear
|
||||
local source = helpers.source
|
||||
local command = helpers.command
|
||||
local exc_exec = helpers.exc_exec
|
||||
local nvim_async = helpers.nvim_async
|
||||
|
||||
local screen
|
||||
|
||||
@ -59,6 +60,7 @@ before_each(function()
|
||||
RBP3={background=Screen.colors.Green},
|
||||
RBP4={background=Screen.colors.Blue},
|
||||
SEP={bold = true, reverse = true},
|
||||
CONFIRM={bold = true, foreground = Screen.colors.SeaGreen4},
|
||||
})
|
||||
end)
|
||||
|
||||
@ -439,3 +441,43 @@ describe('inputdialog()', function()
|
||||
]])
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('confirm()', function()
|
||||
it("shows dialog even if :silent #8788", function()
|
||||
command("autocmd BufNewFile * call confirm('test')")
|
||||
|
||||
local function check_and_clear(edit_line)
|
||||
screen:expect([[
|
||||
|
|
||||
{SEP: }|
|
||||
]]..edit_line..[[
|
||||
{CONFIRM:test} |
|
||||
{CONFIRM:[O]k: }^ |
|
||||
]])
|
||||
feed('<cr>')
|
||||
command('redraw')
|
||||
command('bdelete!')
|
||||
end
|
||||
|
||||
-- With shortmess-=F
|
||||
command('set shortmess-=F')
|
||||
feed(':edit foo<cr>')
|
||||
check_and_clear('"foo" [New File] |\n')
|
||||
|
||||
-- With shortmess+=F
|
||||
command('set shortmess+=F')
|
||||
feed(':edit foo<cr>')
|
||||
check_and_clear(':edit foo |\n')
|
||||
|
||||
-- With :silent
|
||||
feed(':silent edit foo<cr>')
|
||||
check_and_clear(':silent edit foo |\n')
|
||||
|
||||
-- With API (via eval/VimL) call and shortmess+=F
|
||||
feed(':call nvim_command("edit x")<cr>')
|
||||
check_and_clear(':call nvim_command("edit |\n')
|
||||
|
||||
nvim_async('command', 'edit x')
|
||||
check_and_clear(' |\n')
|
||||
end)
|
||||
end)
|
||||
|
@ -11,6 +11,7 @@ local ok = helpers.ok
|
||||
local rmdir = helpers.rmdir
|
||||
local set_session = helpers.set_session
|
||||
local spawn = helpers.spawn
|
||||
local nvim_async = helpers.nvim_async
|
||||
|
||||
describe(':recover', function()
|
||||
before_each(clear)
|
||||
@ -150,5 +151,12 @@ describe('swapfile detection', function()
|
||||
feed('e') -- Chose "Edit" at the swap dialog.
|
||||
feed('<c-c>')
|
||||
screen2:expect(expected_no_dialog)
|
||||
|
||||
-- With API call and shortmess+=F
|
||||
nvim_async('command', 'edit %')
|
||||
screen2:expect{any=[[Found a swap file by the name ".*]]
|
||||
..[[Xtest_swapdialog_dir[/\].*]]..testfile..[[%.swp"]]}
|
||||
feed('e') -- Chose "Edit" at the swap dialog.
|
||||
feed('<c-c>')
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user