Set window height according to the wrap option
This commit is contained in:
parent
e018777b38
commit
b6583623a0
@ -466,6 +466,7 @@ class VimWindow( object ):
|
||||
self.number = number
|
||||
self.buffer = buffer_object
|
||||
self.cursor = cursor
|
||||
self.options = {}
|
||||
|
||||
|
||||
class VimWindows( object ):
|
||||
|
@ -173,13 +173,26 @@ def OpenLocationList_test( vim_command, fitting_height, variable_exists ):
|
||||
variable_exists.assert_called_once_with( '#User#YcmLocationOpened' )
|
||||
|
||||
|
||||
@patch( 'ycm.vimsupport.GetIntValue', return_value = 120 )
|
||||
@patch( 'vim.command' )
|
||||
def SetFittingHeightForCurrentWindow_test( vim_command, *args ):
|
||||
# Create a buffer with one line that is longer than the window width.
|
||||
def SetFittingHeightForCurrentWindow_LineWrapOn_test( vim_command, *args ):
|
||||
# Create a two lines buffer whose first line is longer than the window width.
|
||||
current_buffer = VimBuffer( 'buffer',
|
||||
contents = [ 'a' * 140 ] )
|
||||
with MockVimBuffers( [ current_buffer ], [ current_buffer ] ):
|
||||
contents = [ 'a' * 140, 'b' * 80 ] )
|
||||
with MockVimBuffers( [ current_buffer ], [ current_buffer ] ) as vim:
|
||||
vim.current.window.width = 120
|
||||
vim.current.window.options[ 'wrap' ] = True
|
||||
vimsupport.SetFittingHeightForCurrentWindow()
|
||||
vim_command.assert_called_once_with( '3wincmd _' )
|
||||
|
||||
|
||||
@patch( 'vim.command' )
|
||||
def SetFittingHeightForCurrentWindow_LineWrapOff_test( vim_command, *args ):
|
||||
# Create a two lines buffer whose first line is longer than the window width.
|
||||
current_buffer = VimBuffer( 'buffer',
|
||||
contents = [ 'a' * 140, 'b' * 80 ] )
|
||||
with MockVimBuffers( [ current_buffer ], [ current_buffer ] ) as vim:
|
||||
vim.current.window.width = 120
|
||||
vim.current.window.options[ 'wrap' ] = False
|
||||
vimsupport.SetFittingHeightForCurrentWindow()
|
||||
vim_command.assert_called_once_with( '2wincmd _' )
|
||||
|
||||
|
@ -364,12 +364,20 @@ def OpenQuickFixList( focus = False, autoclose = False ):
|
||||
JumpToPreviousWindow()
|
||||
|
||||
|
||||
def SetFittingHeightForCurrentWindow():
|
||||
window_width = GetIntValue( 'winwidth( 0 )' )
|
||||
def ComputeFittingHeightForCurrentWindow():
|
||||
current_window = vim.current.window
|
||||
if not current_window.options[ 'wrap' ]:
|
||||
return len( vim.current.buffer )
|
||||
|
||||
window_width = current_window.width
|
||||
fitting_height = 0
|
||||
for line in vim.current.buffer:
|
||||
fitting_height += len( line ) // window_width + 1
|
||||
vim.command( '{0}wincmd _'.format( fitting_height ) )
|
||||
return fitting_height
|
||||
|
||||
|
||||
def SetFittingHeightForCurrentWindow():
|
||||
vim.command( '{0}wincmd _'.format( ComputeFittingHeightForCurrentWindow() ) )
|
||||
|
||||
|
||||
def ConvertDiagnosticsToQfList( diagnostics ):
|
||||
|
Loading…
Reference in New Issue
Block a user