mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	vim-patch:9.1.1200: cmdline pum not cleared for input() completion (#32879)
Problem:  Cmdline pum not cleared for input() completion.
Solution: Temporary reset RedrawingDisabled in cmdline_pum_cleanup(),
          like what is done in wildmenu_cleanup() (zeertzjq).
fixes: vim/vim#16874
closes: vim/vim#16876
1830e787f6
No code change is needed in Nvim, as RedrawingDisabled does not prevent
the compositor from removing a grid.
			
			
This commit is contained in:
		@@ -115,6 +115,77 @@ describe('cmdline', function()
 | 
			
		||||
    ]])
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  -- oldtest: Test_wildmenu_with_input_func()
 | 
			
		||||
  it('wildmenu works with input() function', function()
 | 
			
		||||
    local screen = Screen.new(60, 8)
 | 
			
		||||
    screen:add_extra_attr_ids({
 | 
			
		||||
      [100] = { background = Screen.colors.Yellow, foreground = Screen.colors.Black },
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    feed(":call input('Command? ', '', 'command')<CR>")
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
                                                                  |
 | 
			
		||||
      {1:~                                                           }|*6
 | 
			
		||||
      Command? ^                                                   |
 | 
			
		||||
    ]])
 | 
			
		||||
    feed('ech<Tab>')
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
                                                                  |
 | 
			
		||||
      {1:~                                                           }|*5
 | 
			
		||||
      {100:echo}{3:  echoerr  echohl  echomsg  echon                       }|
 | 
			
		||||
      Command? echo^                                               |
 | 
			
		||||
    ]])
 | 
			
		||||
    feed('<Space>')
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
                                                                  |
 | 
			
		||||
      {1:~                                                           }|*6
 | 
			
		||||
      Command? echo ^                                              |
 | 
			
		||||
    ]])
 | 
			
		||||
    feed('bufn<Tab>')
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
                                                                  |
 | 
			
		||||
      {1:~                                                           }|*5
 | 
			
		||||
      {100:bufname(}{3:  bufnr(                                            }|
 | 
			
		||||
      Command? echo bufname(^                                      |
 | 
			
		||||
    ]])
 | 
			
		||||
    feed('<CR>')
 | 
			
		||||
 | 
			
		||||
    command('set wildoptions+=pum')
 | 
			
		||||
 | 
			
		||||
    feed(":call input('Command? ', '', 'command')<CR>")
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
                                                                  |
 | 
			
		||||
      {1:~                                                           }|*6
 | 
			
		||||
      Command? ^                                                   |
 | 
			
		||||
    ]])
 | 
			
		||||
    feed('ech<Tab>')
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
                                                                  |
 | 
			
		||||
      {1:~                                                           }|
 | 
			
		||||
      {1:~       }{12: echo           }{1:                                    }|
 | 
			
		||||
      {1:~       }{4: echoerr        }{1:                                    }|
 | 
			
		||||
      {1:~       }{4: echohl         }{1:                                    }|
 | 
			
		||||
      {1:~       }{4: echomsg        }{1:                                    }|
 | 
			
		||||
      {1:~       }{4: echon          }{1:                                    }|
 | 
			
		||||
      Command? echo^                                               |
 | 
			
		||||
    ]])
 | 
			
		||||
    feed('<Space>')
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
                                                                  |
 | 
			
		||||
      {1:~                                                           }|*6
 | 
			
		||||
      Command? echo ^                                              |
 | 
			
		||||
    ]])
 | 
			
		||||
    feed('bufn<Tab>')
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
                                                                  |
 | 
			
		||||
      {1:~                                                           }|*4
 | 
			
		||||
      {1:~            }{12: bufname(       }{1:                               }|
 | 
			
		||||
      {1:~            }{4: bufnr(         }{1:                               }|
 | 
			
		||||
      Command? echo bufname(^                                      |
 | 
			
		||||
    ]])
 | 
			
		||||
    feed('<CR>')
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  -- oldtest: Test_redraw_in_autocmd()
 | 
			
		||||
  it('cmdline cursor position is correct after :redraw with cmdheight=2', function()
 | 
			
		||||
    local screen = Screen.new(30, 6)
 | 
			
		||||
 
 | 
			
		||||
@@ -212,6 +212,37 @@ func Test_wildmenu_screendump()
 | 
			
		||||
  call StopVimInTerminal(buf)
 | 
			
		||||
endfunc
 | 
			
		||||
 | 
			
		||||
func Test_wildmenu_with_input_func()
 | 
			
		||||
  CheckScreendump
 | 
			
		||||
 | 
			
		||||
  let buf = RunVimInTerminal('-c "set wildmenu"', {'rows': 8})
 | 
			
		||||
 | 
			
		||||
  call term_sendkeys(buf, ":call input('Command? ', '', 'command')\<CR>")
 | 
			
		||||
  call VerifyScreenDump(buf, 'Test_wildmenu_input_func_1', {})
 | 
			
		||||
  call term_sendkeys(buf, "ech\<Tab>")
 | 
			
		||||
  call VerifyScreenDump(buf, 'Test_wildmenu_input_func_2', {})
 | 
			
		||||
  call term_sendkeys(buf, "\<Space>")
 | 
			
		||||
  call VerifyScreenDump(buf, 'Test_wildmenu_input_func_3', {})
 | 
			
		||||
  call term_sendkeys(buf, "bufn\<Tab>")
 | 
			
		||||
  call VerifyScreenDump(buf, 'Test_wildmenu_input_func_4', {})
 | 
			
		||||
  call term_sendkeys(buf, "\<CR>")
 | 
			
		||||
 | 
			
		||||
  call term_sendkeys(buf, ":set wildoptions+=pum\<CR>")
 | 
			
		||||
 | 
			
		||||
  call term_sendkeys(buf, ":call input('Command? ', '', 'command')\<CR>")
 | 
			
		||||
  call VerifyScreenDump(buf, 'Test_wildmenu_input_func_5', {})
 | 
			
		||||
  call term_sendkeys(buf, "ech\<Tab>")
 | 
			
		||||
  call VerifyScreenDump(buf, 'Test_wildmenu_input_func_6', {})
 | 
			
		||||
  call term_sendkeys(buf, "\<Space>")
 | 
			
		||||
  call VerifyScreenDump(buf, 'Test_wildmenu_input_func_7', {})
 | 
			
		||||
  call term_sendkeys(buf, "bufn\<Tab>")
 | 
			
		||||
  call VerifyScreenDump(buf, 'Test_wildmenu_input_func_8', {})
 | 
			
		||||
  call term_sendkeys(buf, "\<CR>")
 | 
			
		||||
 | 
			
		||||
  " clean up
 | 
			
		||||
  call StopVimInTerminal(buf)
 | 
			
		||||
endfunc
 | 
			
		||||
 | 
			
		||||
func Test_redraw_in_autocmd()
 | 
			
		||||
  CheckScreendump
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user