mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	Merge #9297 from justinmk/confirm-dialog
This commit is contained in:
		| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Justin M. Keyes
					Justin M. Keyes