mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	fix(api): don't use 'winborder' when reconfiguring float (#32984)
Problem: Reconfiguring a float window applies the global 'winborder'. Solution: - Ignore 'winborder' when reconfiguring a float window. - Still apply 'winborder' when converting a split to a float window.
This commit is contained in:
		| @@ -1280,7 +1280,7 @@ static bool parse_win_config(win_T *wp, Dict(win_config) *config, WinConfig *fco | ||||
|       goto fail; | ||||
|     } | ||||
|     border_style = config->border; | ||||
|   } else if (*p_winborder != NUL) { | ||||
|   } else if (*p_winborder != NUL && (wp == NULL || !wp->w_floating)) { | ||||
|     border_style = CSTR_AS_OBJ(p_winborder); | ||||
|   } | ||||
|   if (border_style.type != kObjectTypeNil) { | ||||
|   | ||||
| @@ -1907,6 +1907,38 @@ describe('API/win', function() | ||||
|   end) | ||||
|  | ||||
|   describe('set_config', function() | ||||
|     it("uses 'winborder' when converting a split to a floating window", function() | ||||
|       api.nvim_set_option_value('winborder', 'single', {}) | ||||
|       command('split') | ||||
|       local winid = api.nvim_get_current_win() | ||||
|       -- Convert split to float without specifying border | ||||
|       api.nvim_win_set_config(winid, { | ||||
|         relative = 'editor', | ||||
|         row = 2, | ||||
|         col = 2, | ||||
|         width = 10, | ||||
|         height = 5, | ||||
|       }) | ||||
|       local config = api.nvim_win_get_config(winid) | ||||
|       eq('┌', config.border[1]) | ||||
|     end) | ||||
|  | ||||
|     it('erases border of a floating window when converting to split window', function() | ||||
|       api.nvim_set_option_value('winborder', 'single', {}) | ||||
|       local winid = api.nvim_open_win(api.nvim_create_buf(false, false), false, { | ||||
|         relative = 'editor', | ||||
|         row = 2, | ||||
|         col = 2, | ||||
|         width = 10, | ||||
|         height = 5, | ||||
|       }) | ||||
|       local config = api.nvim_win_get_config(winid) | ||||
|       eq('┌', config.border[1]) | ||||
|       api.nvim_win_set_config(winid, { split = 'right', win = 0 }) | ||||
|       config = api.nvim_win_get_config(winid) | ||||
|       eq(nil, config.border) | ||||
|     end) | ||||
|  | ||||
|     it('moves a split into a float', function() | ||||
|       local win = api.nvim_open_win(0, true, { | ||||
|         vertical = false, | ||||
|   | ||||
| @@ -10088,7 +10088,7 @@ describe('float window', function() | ||||
|       -- respect config.border | ||||
|       command('set winborder=rounded') | ||||
|       config.border = 'single' | ||||
|       api.nvim_open_win(buf, false, config) | ||||
|       local winid = api.nvim_open_win(buf, false, config) | ||||
|       if multigrid then | ||||
|         screen:expect({ | ||||
|           grid = [[ | ||||
| @@ -10153,6 +10153,11 @@ describe('float window', function() | ||||
|         ]]) | ||||
|       end | ||||
|  | ||||
|       -- don't use winborder when reconfig a floating window | ||||
|       config.border = nil | ||||
|       api.nvim_win_set_config(winid, config) | ||||
|       screen:expect_unchanged() | ||||
|       command('fclose!') | ||||
|       -- it is currently not supported. | ||||
|       eq('Vim(set):E474: Invalid argument: winborder=custom', pcall_err(command, 'set winborder=custom')) | ||||
|     end) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 glepnir
					glepnir