mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 f91b1885dd
			
		
	
	f91b1885dd
	
	
	
		
			
			In non-multigrid UI the only change is that the returned height now excludes winbar, and this is compatible with Vim. In multigrid UI this means the return value of these functions now reflect the space available for buffer lines in a window. No change in nvim_win_get_height() and nvim_win_get_width().
		
			
				
	
	
		
			681 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			681 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local helpers = require('test.functional.helpers')(after_each)
 | |
| local Screen = require('test.functional.ui.screen')
 | |
| local clear = helpers.clear
 | |
| local command = helpers.command
 | |
| local insert = helpers.insert
 | |
| local meths = helpers.meths
 | |
| local eq = helpers.eq
 | |
| local poke_eventloop = helpers.poke_eventloop
 | |
| local feed = helpers.feed
 | |
| local funcs = helpers.funcs
 | |
| local curwin = helpers.curwin
 | |
| local pcall_err = helpers.pcall_err
 | |
| 
 | |
| describe('winbar', function()
 | |
|   local screen
 | |
| 
 | |
|   before_each(function()
 | |
|     clear()
 | |
|     screen = Screen.new(60, 13)
 | |
|     screen:attach()
 | |
|     screen:set_default_attr_ids({
 | |
|       [1] = {bold = true},
 | |
|       [2] = {reverse = true},
 | |
|       [3] = {bold = true, foreground = Screen.colors.Blue},
 | |
|       [4] = {bold = true, reverse = true},
 | |
|       [5] = {bold = true, foreground = Screen.colors.Red},
 | |
|       [6] = {foreground = Screen.colors.Blue},
 | |
|       [7] = {background = Screen.colors.LightGrey},
 | |
|       [8] = {background = Screen.colors.LightMagenta},
 | |
|       [9] = {bold = true, foreground = Screen.colors.Blue, background = Screen.colors.LightMagenta},
 | |
|       [10] = {background = Screen.colors.LightGrey, underline = true},
 | |
|       [11] = {background = Screen.colors.LightGrey, underline = true, bold = true, foreground = Screen.colors.Magenta},
 | |
|     })
 | |
|     meths.set_option('winbar', 'Set Up The Bars')
 | |
|   end)
 | |
| 
 | |
|   it('works', function()
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|     -- winbar is excluded from the heights returned by winheight() and getwininfo()
 | |
|     eq(11, funcs.winheight(0))
 | |
|     local win_info = funcs.getwininfo(curwin().id)[1]
 | |
|     eq(11, win_info.height)
 | |
|     eq(1, win_info.winbar)
 | |
|   end)
 | |
| 
 | |
|   it('works with custom \'fillchars\' value', function()
 | |
|     command('set fillchars=wbr:+')
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars+++++++++++++++++++++++++++++++++++++++++++++}|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|   end)
 | |
| 
 | |
|   it('works with custom highlight', function()
 | |
|     command('hi WinBar guifg=red')
 | |
|     screen:expect([[
 | |
|       {5:Set Up The Bars                                             }|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|   end)
 | |
| 
 | |
|   it('works with splits', function()
 | |
|     command('hi WinBar guifg=red')
 | |
|     command('hi WinBarNC guifg=blue')
 | |
|     command('belowright vsplit | split | split')
 | |
|     screen:expect([[
 | |
|       {6:Set Up The Bars              }│{5:Set Up The Bars               }|
 | |
|                                    │^                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{4:[No Name]                     }|
 | |
|       {3:~                            }│{6:Set Up The Bars               }|
 | |
|       {3:~                            }│                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{2:[No Name]                     }|
 | |
|       {3:~                            }│{6:Set Up The Bars               }|
 | |
|       {3:~                            }│                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {2:[No Name]                     [No Name]                     }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|   end)
 | |
| 
 | |
|   it('works when switching value of \'winbar\'', function()
 | |
|     command('belowright vsplit | split | split | set winbar=')
 | |
|     screen:expect([[
 | |
|                                    │^                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{4:[No Name]                     }|
 | |
|       {3:~                            }│                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{2:[No Name]                     }|
 | |
|       {3:~                            }│                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {2:[No Name]                     [No Name]                     }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|     command('set winbar=All\\ Your\\ Bar\\ Are\\ Belong\\ To\\ Us')
 | |
|     screen:expect([[
 | |
|       {1:All Your Bar Are Belong To Us}│{1:All Your Bar Are Belong To Us }|
 | |
|                                    │^                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{4:[No Name]                     }|
 | |
|       {3:~                            }│{1:All Your Bar Are Belong To Us }|
 | |
|       {3:~                            }│                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{2:[No Name]                     }|
 | |
|       {3:~                            }│{1:All Your Bar Are Belong To Us }|
 | |
|       {3:~                            }│                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {2:[No Name]                     [No Name]                     }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|     command('set winbar=Changed\\ winbar')
 | |
|     screen:expect([[
 | |
|       {1:Changed winbar               }│{1:Changed winbar                }|
 | |
|                                    │^                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{4:[No Name]                     }|
 | |
|       {3:~                            }│{1:Changed winbar                }|
 | |
|       {3:~                            }│                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }│{2:[No Name]                     }|
 | |
|       {3:~                            }│{1:Changed winbar                }|
 | |
|       {3:~                            }│                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {2:[No Name]                     [No Name]                     }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|   end)
 | |
| 
 | |
|   it('can be ruler', function()
 | |
|     insert [[
 | |
|       just some
 | |
|       random text]]
 | |
|     meths.set_option('winbar', 'Hello, I am a ruler: %l,%c')
 | |
|     screen:expect{grid=[[
 | |
|       {1:Hello, I am a ruler: 2,11                                   }|
 | |
|       just some                                                   |
 | |
|       random tex^t                                                 |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]]}
 | |
|     feed 'b'
 | |
|     screen:expect{grid=[[
 | |
|       {1:Hello, I am a ruler: 2,8                                    }|
 | |
|       just some                                                   |
 | |
|       random ^text                                                 |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]]}
 | |
|     feed 'k'
 | |
|     screen:expect{grid=[[
 | |
|       {1:Hello, I am a ruler: 1,8                                    }|
 | |
|       just so^me                                                   |
 | |
|       random text                                                 |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]]}
 | |
|   end)
 | |
| 
 | |
|   it('works with laststatus=3', function()
 | |
|     command('set laststatus=3')
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {4:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|     command('belowright vsplit | split | split')
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars              }│{1:Set Up The Bars               }|
 | |
|                                    │^                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }├──────────────────────────────|
 | |
|       {3:~                            }│{1:Set Up The Bars               }|
 | |
|       {3:~                            }│                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {3:~                            }├──────────────────────────────|
 | |
|       {3:~                            }│{1:Set Up The Bars               }|
 | |
|       {3:~                            }│                              |
 | |
|       {3:~                            }│{3:~                             }|
 | |
|       {4:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|     -- Test for issue #18791
 | |
|     command('tabnew')
 | |
|     screen:expect([[
 | |
|       {10: }{11:4}{10: [No Name] }{1: [No Name] }{2:                                   }{10:X}|
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {4:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|   end)
 | |
| 
 | |
|   it('mouse click and drag work correctly in buffer', function()
 | |
|     insert([[
 | |
|       line 1
 | |
|       line 2
 | |
|       line 3
 | |
|       line 4
 | |
|       line -42
 | |
|       line i
 | |
|       line sin(theta)
 | |
|       line 8]])
 | |
| 
 | |
|     meths.input_mouse('left', 'press', '', 0, 5, 1)
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       line 1                                                      |
 | |
|       line 2                                                      |
 | |
|       line 3                                                      |
 | |
|       line 4                                                      |
 | |
|       l^ine -42                                                    |
 | |
|       line i                                                      |
 | |
|       line sin(theta)                                             |
 | |
|       line 8                                                      |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|     eq({5, 1}, meths.win_get_cursor(0))
 | |
| 
 | |
|     meths.input_mouse('left', 'drag', '', 0, 6, 2)
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       line 1                                                      |
 | |
|       line 2                                                      |
 | |
|       line 3                                                      |
 | |
|       line 4                                                      |
 | |
|       l{7:ine -42}                                                    |
 | |
|       {7:li}^ne i                                                      |
 | |
|       line sin(theta)                                             |
 | |
|       line 8                                                      |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {1:-- VISUAL --}                                                |
 | |
|     ]])
 | |
|     eq({6, 2}, meths.win_get_cursor(0))
 | |
| 
 | |
|     meths.input_mouse('left', 'drag', '', 0, 1, 2)
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       li^n{7:e 1}                                                      |
 | |
|       {7:line 2}                                                      |
 | |
|       {7:line 3}                                                      |
 | |
|       {7:line 4}                                                      |
 | |
|       {7:li}ne -42                                                    |
 | |
|       line i                                                      |
 | |
|       line sin(theta)                                             |
 | |
|       line 8                                                      |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {1:-- VISUAL --}                                                |
 | |
|     ]])
 | |
|     eq({1, 2}, meths.win_get_cursor(0))
 | |
| 
 | |
|     meths.input_mouse('left', 'drag', '', 0, 0, 2)
 | |
|     screen:expect_unchanged()
 | |
|     eq({1, 2}, meths.win_get_cursor(0))
 | |
|   end)
 | |
| 
 | |
|   it('dragging statusline with mouse works correctly', function()
 | |
|     command('split')
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {4:[No Name]                                                   }|
 | |
|       {1:Set Up The Bars                                             }|
 | |
|                                                                   |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
| 
 | |
|     meths.input_mouse('left', 'press', '', 1, 5, 10)
 | |
|     poke_eventloop()
 | |
|     meths.input_mouse('left', 'drag', '', 1, 6, 10)
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {4:[No Name]                                                   }|
 | |
|       {1:Set Up The Bars                                             }|
 | |
|                                                                   |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
| 
 | |
|     meths.input_mouse('left', 'drag', '', 1, 4, 10)
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {4:[No Name]                                                   }|
 | |
|       {1:Set Up The Bars                                             }|
 | |
|                                                                   |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
| 
 | |
|     meths.input_mouse('left', 'press', '', 1, 11, 10)
 | |
|     poke_eventloop()
 | |
|     meths.input_mouse('left', 'drag', '', 1, 9, 10)
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {4:[No Name]                                                   }|
 | |
|       {1:Set Up The Bars                                             }|
 | |
|                                                                   |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|                                                                   |
 | |
|                                                                   |
 | |
|     ]])
 | |
|     eq(3, meths.get_option('cmdheight'))
 | |
| 
 | |
|     meths.input_mouse('left', 'drag', '', 1, 11, 10)
 | |
|     screen:expect([[
 | |
|       {1:Set Up The Bars                                             }|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {4:[No Name]                                                   }|
 | |
|       {1:Set Up The Bars                                             }|
 | |
|                                                                   |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|     eq(1, meths.get_option('cmdheight'))
 | |
|   end)
 | |
| 
 | |
|   it('properly equalizes window height for window-local value', function()
 | |
|     command('set equalalways | set winbar= | setlocal winbar=a | split')
 | |
|     command('setlocal winbar= | split')
 | |
|     command('setlocal winbar=b | split')
 | |
|     screen:expect([[
 | |
|       {1:b                                                           }|
 | |
|       ^                                                            |
 | |
|       {4:[No Name]                                                   }|
 | |
|       {1:b                                                           }|
 | |
|                                                                   |
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|       {3:~                                                           }|
 | |
|       {2:[No Name]                                                   }|
 | |
|       {1:a                                                           }|
 | |
|                                                                   |
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|   end)
 | |
| 
 | |
|   it('requires window-local value for floating windows', function()
 | |
|     local win = meths.open_win(0, false, { relative = 'editor', row = 2, col = 10, height = 7,
 | |
|                                            width = 30 })
 | |
|     meths.set_option_value('winbar', 'bar', {})
 | |
|     screen:expect{grid=[[
 | |
|       {1:bar                                                         }|
 | |
|       ^                                                            |
 | |
|       {3:~         }{8:                              }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]]}
 | |
|     meths.set_option_value('winbar', 'floaty bar', { scope = 'local', win = win.id })
 | |
|     screen:expect{grid=[[
 | |
|       {1:bar                                                         }|
 | |
|       ^                                                            |
 | |
|       {3:~         }{1:floaty bar                    }{3:                    }|
 | |
|       {3:~         }{8:                              }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~         }{9:~                             }{3:                    }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]]}
 | |
|   end)
 | |
| 
 | |
|   it('works correctly when moving a split', function()
 | |
|     screen:try_resize(45, 6)
 | |
|     command('set winbar=')
 | |
|     command('vsplit')
 | |
|     command('setlocal winbar=foo')
 | |
|     screen:expect([[
 | |
|       {1:foo                   }│                      |
 | |
|       ^                      │{3:~                     }|
 | |
|       {3:~                     }│{3:~                     }|
 | |
|       {3:~                     }│{3:~                     }|
 | |
|       {4:[No Name]              }{2:[No Name]             }|
 | |
|                                                    |
 | |
|     ]])
 | |
| 
 | |
|     command('wincmd L')
 | |
|     screen:expect([[
 | |
|                             │{1:foo                   }|
 | |
|       {3:~                     }│^                      |
 | |
|       {3:~                     }│{3:~                     }|
 | |
|       {3:~                     }│{3:~                     }|
 | |
|       {2:[No Name]              }{4:[No Name]             }|
 | |
|                                                    |
 | |
|     ]])
 | |
| 
 | |
|     command('wincmd w')
 | |
|     command('wincmd L')
 | |
|     screen:expect([[
 | |
|       {1:foo                   }│^                      |
 | |
|                             │{3:~                     }|
 | |
|       {3:~                     }│{3:~                     }|
 | |
|       {3:~                     }│{3:~                     }|
 | |
|       {2:[No Name]              }{4:[No Name]             }|
 | |
|                                                    |
 | |
|     ]])
 | |
|   end)
 | |
| 
 | |
|   it('properly resizes window when there is no space in it', function()
 | |
|     command('set winbar= | 1split')
 | |
|     screen:expect([[
 | |
|       ^                                                            |
 | |
|       {4:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|     command('set winbar=a')
 | |
|     screen:expect([[
 | |
|       {1:a                                                           }|
 | |
|       ^                                                            |
 | |
|       {4:[No Name]                                                   }|
 | |
|       {1:a                                                           }|
 | |
|                                                                   |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|   end)
 | |
| 
 | |
|   it('cannot be added unless there is room', function()
 | |
|     command('set winbar= | split | split | split | split | split')
 | |
|     screen:expect([[
 | |
|       ^                                                            |
 | |
|       {4:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|       {2:[No Name]                                                   }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|     eq('Vim(set):E36: Not enough room', pcall_err(command, 'set winbar=test'))
 | |
|   end)
 | |
| end)
 | |
| 
 | |
| describe('local winbar with tabs', function()
 | |
|   local screen
 | |
|   before_each(function()
 | |
|     clear()
 | |
|     screen = Screen.new(60, 10)
 | |
|     screen:attach()
 | |
|     screen:set_default_attr_ids({
 | |
|       [1] = {bold = true},
 | |
|       [2] = {reverse = true},
 | |
|       [3] = {bold = true, foreground = Screen.colors.Blue},
 | |
|       [4] = {underline = true, background = Screen.colors.LightGray}
 | |
|     })
 | |
|     meths.set_option_value('winbar', 'foo', { scope = 'local', win = 0 })
 | |
|   end)
 | |
| 
 | |
|   it('works', function()
 | |
|     command('tabnew')
 | |
|     screen:expect([[
 | |
|       {4: [No Name] }{1: [No Name] }{2:                                     }{4:X}|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]])
 | |
|     command('tabnext')
 | |
|     screen:expect{grid=[[
 | |
|       {1: [No Name] }{4: [No Name] }{2:                                     }{4:X}|
 | |
|       {1:foo                                                         }|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]]}
 | |
|   end)
 | |
| 
 | |
|   it('can edit new empty buffer #19458', function()
 | |
|     insert [[
 | |
|       some
 | |
|       goofy
 | |
|       text]]
 | |
|     screen:expect{grid=[[
 | |
|       {1:foo                                                         }|
 | |
|       some                                                        |
 | |
|       goofy                                                       |
 | |
|       tex^t                                                        |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]]}
 | |
| 
 | |
|     -- this used to throw an E315 ml_get error
 | |
|     command 'tabedit'
 | |
|     screen:expect{grid=[[
 | |
|       {4: + [No Name] }{1: [No Name] }{2:                                   }{4:X}|
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]]}
 | |
| 
 | |
|     command 'tabprev'
 | |
|     screen:expect{grid=[[
 | |
|       {1: + [No Name] }{4: [No Name] }{2:                                   }{4:X}|
 | |
|       {1:foo                                                         }|
 | |
|       some                                                        |
 | |
|       goofy                                                       |
 | |
|       tex^t                                                        |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]]}
 | |
|   end)
 | |
| end)
 |