mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	@@ -1106,6 +1106,7 @@ static void refresh_timer_cb(TimeWatcher *watcher, void *data)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  refresh_pending = false;
 | 
					  refresh_pending = false;
 | 
				
			||||||
  if (exiting  // Cannot redraw (requires event loop) during teardown/exit.
 | 
					  if (exiting  // Cannot redraw (requires event loop) during teardown/exit.
 | 
				
			||||||
 | 
					      || (State & CMDPREVIEW)
 | 
				
			||||||
      // WM_LIST (^D) is not redrawn, unlike the normal wildmenu. So we must
 | 
					      // WM_LIST (^D) is not redrawn, unlike the normal wildmenu. So we must
 | 
				
			||||||
      // skip redraws to keep it visible.
 | 
					      // skip redraws to keep it visible.
 | 
				
			||||||
      || wild_menu_showing == WM_LIST) {
 | 
					      || wild_menu_showing == WM_LIST) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,6 +16,8 @@ local retry = helpers.retry
 | 
				
			|||||||
local source = helpers.source
 | 
					local source = helpers.source
 | 
				
			||||||
local wait = helpers.wait
 | 
					local wait = helpers.wait
 | 
				
			||||||
local nvim = helpers.nvim
 | 
					local nvim = helpers.nvim
 | 
				
			||||||
 | 
					local iswin = helpers.iswin
 | 
				
			||||||
 | 
					local sleep = helpers.sleep
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local default_text = [[
 | 
					local default_text = [[
 | 
				
			||||||
  Inc substitution on
 | 
					  Inc substitution on
 | 
				
			||||||
@@ -1850,7 +1852,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    clear()
 | 
					    clear()
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=split, highlights multiline substitutions", function()
 | 
					  it("inccommand=split, highlights multiline substitutions", function()
 | 
				
			||||||
    common_setup(screen, "split", multiline_text)
 | 
					    common_setup(screen, "split", multiline_text)
 | 
				
			||||||
    feed("gg")
 | 
					    feed("gg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1912,7 +1914,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=nosplit, highlights multiline substitutions", function()
 | 
					  it("inccommand=nosplit, highlights multiline substitutions", function()
 | 
				
			||||||
    common_setup(screen, "nosplit", multiline_text)
 | 
					    common_setup(screen, "nosplit", multiline_text)
 | 
				
			||||||
    feed("gg")
 | 
					    feed("gg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1955,7 +1957,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=split, highlights multiple matches on a line", function()
 | 
					  it("inccommand=split, highlights multiple matches on a line", function()
 | 
				
			||||||
    common_setup(screen, "split", multimatch_text)
 | 
					    common_setup(screen, "split", multimatch_text)
 | 
				
			||||||
    command("set gdefault")
 | 
					    command("set gdefault")
 | 
				
			||||||
    feed("gg")
 | 
					    feed("gg")
 | 
				
			||||||
@@ -1980,7 +1982,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=nosplit, highlights multiple matches on a line", function()
 | 
					  it("inccommand=nosplit, highlights multiple matches on a line", function()
 | 
				
			||||||
    common_setup(screen, "nosplit", multimatch_text)
 | 
					    common_setup(screen, "nosplit", multimatch_text)
 | 
				
			||||||
    command("set gdefault")
 | 
					    command("set gdefault")
 | 
				
			||||||
    feed("gg")
 | 
					    feed("gg")
 | 
				
			||||||
@@ -2005,7 +2007,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=split, with \\zs", function()
 | 
					  it("inccommand=split, with \\zs", function()
 | 
				
			||||||
    common_setup(screen, "split", multiline_text)
 | 
					    common_setup(screen, "split", multiline_text)
 | 
				
			||||||
    feed("gg")
 | 
					    feed("gg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2029,7 +2031,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=nosplit, with \\zs", function()
 | 
					  it("inccommand=nosplit, with \\zs", function()
 | 
				
			||||||
    common_setup(screen, "nosplit", multiline_text)
 | 
					    common_setup(screen, "nosplit", multiline_text)
 | 
				
			||||||
    feed("gg")
 | 
					    feed("gg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2053,7 +2055,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=split, substitutions of different length",
 | 
					  it("inccommand=split, substitutions of different length",
 | 
				
			||||||
    function()
 | 
					    function()
 | 
				
			||||||
    common_setup(screen, "split", "T T123 T2T TTT T090804\nx")
 | 
					    common_setup(screen, "split", "T T123 T2T TTT T090804\nx")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2077,7 +2079,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=nosplit, substitutions of different length", function()
 | 
					  it("inccommand=nosplit, substitutions of different length", function()
 | 
				
			||||||
    common_setup(screen, "nosplit", "T T123 T2T TTT T090804\nx")
 | 
					    common_setup(screen, "nosplit", "T T123 T2T TTT T090804\nx")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    feed(":%s/T\\([0-9]\\+\\)/\\1\\1/g")
 | 
					    feed(":%s/T\\([0-9]\\+\\)/\\1\\1/g")
 | 
				
			||||||
@@ -2100,7 +2102,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=split, contraction of lines", function()
 | 
					  it("inccommand=split, contraction of lines", function()
 | 
				
			||||||
    local text = [[
 | 
					    local text = [[
 | 
				
			||||||
      T T123 T T123 T2T TT T23423424
 | 
					      T T123 T T123 T2T TT T23423424
 | 
				
			||||||
      x
 | 
					      x
 | 
				
			||||||
@@ -2149,7 +2151,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=nosplit, contraction of lines", function()
 | 
					  it("inccommand=nosplit, contraction of lines", function()
 | 
				
			||||||
    local text = [[
 | 
					    local text = [[
 | 
				
			||||||
      T T123 T T123 T2T TT T23423424
 | 
					      T T123 T T123 T2T TT T23423424
 | 
				
			||||||
      x
 | 
					      x
 | 
				
			||||||
@@ -2179,7 +2181,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=split, multibyte text", function()
 | 
					  it("inccommand=split, multibyte text", function()
 | 
				
			||||||
    common_setup(screen, "split", multibyte_text)
 | 
					    common_setup(screen, "split", multibyte_text)
 | 
				
			||||||
    feed(":%s/£.*ѫ/X¥¥")
 | 
					    feed(":%s/£.*ѫ/X¥¥")
 | 
				
			||||||
    screen:expect([[
 | 
					    screen:expect([[
 | 
				
			||||||
@@ -2220,7 +2222,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=nosplit, multibyte text", function()
 | 
					  it("inccommand=nosplit, multibyte text", function()
 | 
				
			||||||
    common_setup(screen, "nosplit", multibyte_text)
 | 
					    common_setup(screen, "nosplit", multibyte_text)
 | 
				
			||||||
    feed(":%s/£.*ѫ/X¥¥")
 | 
					    feed(":%s/£.*ѫ/X¥¥")
 | 
				
			||||||
    screen:expect([[
 | 
					    screen:expect([[
 | 
				
			||||||
@@ -2261,7 +2263,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=split, small cmdwinheight", function()
 | 
					  it("inccommand=split, small cmdwinheight", function()
 | 
				
			||||||
    common_setup(screen, "split", long_multiline_text)
 | 
					    common_setup(screen, "split", long_multiline_text)
 | 
				
			||||||
    command("set cmdwinheight=2")
 | 
					    command("set cmdwinheight=2")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2323,7 +2325,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=split, large cmdwinheight", function()
 | 
					  it("inccommand=split, large cmdwinheight", function()
 | 
				
			||||||
    common_setup(screen, "split", long_multiline_text)
 | 
					    common_setup(screen, "split", long_multiline_text)
 | 
				
			||||||
    command("set cmdwinheight=11")
 | 
					    command("set cmdwinheight=11")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2385,7 +2387,7 @@ describe(":substitute", function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it(", inccommand=split, lookaround", function()
 | 
					  it("inccommand=split, lookaround", function()
 | 
				
			||||||
    common_setup(screen, "split", "something\neverything\nsomeone")
 | 
					    common_setup(screen, "split", "something\neverything\nsomeone")
 | 
				
			||||||
    feed([[:%s/\(some\)\@<lt>=thing/one/]])
 | 
					    feed([[:%s/\(some\)\@<lt>=thing/one/]])
 | 
				
			||||||
    screen:expect([[
 | 
					    screen:expect([[
 | 
				
			||||||
@@ -2469,4 +2471,57 @@ describe(":substitute", function()
 | 
				
			|||||||
      :%s/some\(thing\)\@!/every/^   |
 | 
					      :%s/some\(thing\)\@!/every/^   |
 | 
				
			||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('with inccommand during :terminal activity', function()
 | 
				
			||||||
 | 
					    command("set cmdwinheight=3")
 | 
				
			||||||
 | 
					    if iswin() then
 | 
				
			||||||
 | 
					      feed([[:terminal for /L \%I in (1,1,5000) do @(echo xxx & echo xxx & echo xxx)<cr>]])
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      feed([[:terminal for i in $(seq 1 5000); do printf 'xxx\nxxx\nxxx\n'; done<cr>]])
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    command('file term')
 | 
				
			||||||
 | 
					    command('new')
 | 
				
			||||||
 | 
					    common_setup(screen, 'split', 'foo bar baz\nbar baz fox\nbar foo baz')
 | 
				
			||||||
 | 
					    command('wincmd =')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Allow some terminal output.
 | 
				
			||||||
 | 
					    screen:expect([[
 | 
				
			||||||
 | 
					      bar baz fox                   |
 | 
				
			||||||
 | 
					      bar foo ba^z                   |
 | 
				
			||||||
 | 
					      {15:~                             }|
 | 
				
			||||||
 | 
					      {15:~                             }|
 | 
				
			||||||
 | 
					      {15:~                             }|
 | 
				
			||||||
 | 
					      {15:~                             }|
 | 
				
			||||||
 | 
					      {11:[No Name] [+]                 }|
 | 
				
			||||||
 | 
					      xxx                           |
 | 
				
			||||||
 | 
					      xxx                           |
 | 
				
			||||||
 | 
					      xxx                           |
 | 
				
			||||||
 | 
					      xxx                           |
 | 
				
			||||||
 | 
					      xxx                           |
 | 
				
			||||||
 | 
					      xxx                           |
 | 
				
			||||||
 | 
					      {10:term                          }|
 | 
				
			||||||
 | 
					                                    |
 | 
				
			||||||
 | 
					    ]])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    feed('gg')
 | 
				
			||||||
 | 
					    feed(':%s/foo/ZZZ')
 | 
				
			||||||
 | 
					    sleep(50)  -- Allow some terminal activity.
 | 
				
			||||||
 | 
					    screen:expect([[
 | 
				
			||||||
 | 
					      {12:ZZZ} bar baz                   |
 | 
				
			||||||
 | 
					      bar baz fox                   |
 | 
				
			||||||
 | 
					      bar {12:ZZZ} baz                   |
 | 
				
			||||||
 | 
					      {15:~                             }|
 | 
				
			||||||
 | 
					      {15:~                             }|
 | 
				
			||||||
 | 
					      {15:~                             }|
 | 
				
			||||||
 | 
					      {11:[No Name] [+]                 }|
 | 
				
			||||||
 | 
					      xxx                           |
 | 
				
			||||||
 | 
					      xxx                           |
 | 
				
			||||||
 | 
					      {10:term                          }|
 | 
				
			||||||
 | 
					      |1| {12:ZZZ} bar baz               |
 | 
				
			||||||
 | 
					      |3| bar {12:ZZZ} baz               |
 | 
				
			||||||
 | 
					      {15:~                             }|
 | 
				
			||||||
 | 
					      {10:[Preview]                     }|
 | 
				
			||||||
 | 
					      :%s/foo/ZZZ^                   |
 | 
				
			||||||
 | 
					    ]])
 | 
				
			||||||
 | 
					  end)
 | 
				
			||||||
end)
 | 
					end)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ local feed_command = helpers.feed_command
 | 
				
			|||||||
local eq = helpers.eq
 | 
					local eq = helpers.eq
 | 
				
			||||||
local eval = helpers.eval
 | 
					local eval = helpers.eval
 | 
				
			||||||
local iswin = helpers.iswin
 | 
					local iswin = helpers.iswin
 | 
				
			||||||
 | 
					local sleep = helpers.sleep
 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe('search highlighting', function()
 | 
					describe('search highlighting', function()
 | 
				
			||||||
  local screen
 | 
					  local screen
 | 
				
			||||||
@@ -92,18 +93,13 @@ describe('search highlighting', function()
 | 
				
			|||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('#x is preserved during :terminal activity', function()
 | 
					  it('is preserved during :terminal activity', function()
 | 
				
			||||||
    -- Because this test verifies a _lack_ of activity after screen:sleep(), we
 | 
					 | 
				
			||||||
    -- must wait the full timeout. So make it reasonable.
 | 
					 | 
				
			||||||
    screen.timeout = 1000
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if iswin() then
 | 
					    if iswin() then
 | 
				
			||||||
      feed([[:terminal for /L \%I in (1,1,5000) do @(echo xxx & echo xxx & echo xxx)<cr>]])
 | 
					      feed([[:terminal for /L \%I in (1,1,5000) do @(echo xxx & echo xxx & echo xxx)<cr>]])
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      feed([[:terminal for i in $(seq 1 5000); do printf 'xxx\nxxx\nxxx\n'; sleep 0.1; done<cr>]])
 | 
					      feed([[:terminal for i in $(seq 1 5000); do printf 'xxx\nxxx\nxxx\n'; done<cr>]])
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    feed([[<C-\><C-N>gg]])
 | 
					 | 
				
			||||||
    feed(':file term<CR>')
 | 
					    feed(':file term<CR>')
 | 
				
			||||||
    feed(':vnew<CR>')
 | 
					    feed(':vnew<CR>')
 | 
				
			||||||
    insert([[
 | 
					    insert([[
 | 
				
			||||||
@@ -112,6 +108,7 @@ describe('search highlighting', function()
 | 
				
			|||||||
      bar foo baz
 | 
					      bar foo baz
 | 
				
			||||||
    ]])
 | 
					    ]])
 | 
				
			||||||
    feed('/foo')
 | 
					    feed('/foo')
 | 
				
			||||||
 | 
					    sleep(50)  -- Allow some terminal activity.
 | 
				
			||||||
    screen:expect([[
 | 
					    screen:expect([[
 | 
				
			||||||
        {3:foo} bar baz       {3:│}xxx                |
 | 
					        {3:foo} bar baz       {3:│}xxx                |
 | 
				
			||||||
        bar baz {2:foo}       {3:│}xxx                |
 | 
					        bar baz {2:foo}       {3:│}xxx                |
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user