mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	fix(options): do not change inccommand during preview (#25462)
This commit is contained in:
		@@ -1569,6 +1569,9 @@ const char *did_set_iconstring(optset_T *args)
 | 
				
			|||||||
/// The 'inccommand' option is changed.
 | 
					/// The 'inccommand' option is changed.
 | 
				
			||||||
const char *did_set_inccommand(optset_T *args FUNC_ATTR_UNUSED)
 | 
					const char *did_set_inccommand(optset_T *args FUNC_ATTR_UNUSED)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (cmdpreview) {
 | 
				
			||||||
 | 
					    return e_invarg;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  return did_set_opt_strings(p_icm, p_icm_values, false);
 | 
					  return did_set_opt_strings(p_icm, p_icm_values, false);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3167,3 +3167,31 @@ it("with 'inccommand' typing :filter doesn't segfault or leak memory #19057", fu
 | 
				
			|||||||
  feed('i')
 | 
					  feed('i')
 | 
				
			||||||
  assert_alive()
 | 
					  assert_alive()
 | 
				
			||||||
end)
 | 
					end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					it("'inccommand' cannot be changed during preview #23136", function()
 | 
				
			||||||
 | 
					  clear()
 | 
				
			||||||
 | 
					  local screen = Screen.new(30, 6)
 | 
				
			||||||
 | 
					  common_setup(screen, 'nosplit', 'foo\nbar\nbaz')
 | 
				
			||||||
 | 
					  source([[
 | 
				
			||||||
 | 
					    function! IncCommandToggle()
 | 
				
			||||||
 | 
					      let prev = &inccommand
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if &inccommand ==# 'split'
 | 
				
			||||||
 | 
					        set inccommand=nosplit
 | 
				
			||||||
 | 
					      elseif &inccommand ==# 'nosplit'
 | 
				
			||||||
 | 
					        set inccommand=split
 | 
				
			||||||
 | 
					      elseif &inccommand ==# ''
 | 
				
			||||||
 | 
					        set inccommand=nosplit
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					        throw 'unknown inccommand'
 | 
				
			||||||
 | 
					      endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return " \<BS>"
 | 
				
			||||||
 | 
					    endfun
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cnoremap <expr> <C-E> IncCommandToggle()
 | 
				
			||||||
 | 
					  ]])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  feed(':%s/foo/bar<C-E><C-E><C-E>')
 | 
				
			||||||
 | 
					  assert_alive()
 | 
				
			||||||
 | 
					end)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user