Ensure only loclist or quickfix windows are closed

This commit is contained in:
micbou 2019-03-02 13:06:46 +01:00
parent 443356132e
commit 98117cab69
No known key found for this signature in database
GPG Key ID: C7E8FD1F3BDA1E05
3 changed files with 22 additions and 8 deletions

View File

@ -107,7 +107,11 @@ class GoToResponse_QuickFix_test( object ):
] )
vim_command.assert_has_exact_calls( [
call( 'botright copen' ),
call( 'au WinLeave <buffer> q' ),
call( 'augroup ycmquickfix' ),
call( 'autocmd! * <buffer>' ),
call( 'autocmd WinLeave <buffer> '
'if bufnr( "%" ) == expand( "<abuf>" ) | q | endif' ),
call( 'augroup END' ),
call( 'doautocmd User YcmQuickFixOpened' )
] )
set_fitting_height.assert_called_once_with()

View File

@ -165,7 +165,11 @@ def OpenLocationList_test( vim_command, fitting_height, variable_exists ):
vimsupport.OpenLocationList( focus = False, autoclose = True )
vim_command.assert_has_exact_calls( [
call( 'lopen' ),
call( 'au WinLeave <buffer> q' ),
call( 'augroup ycmlocation' ),
call( 'autocmd! * <buffer>' ),
call( 'autocmd WinLeave <buffer> '
'if bufnr( "%" ) == expand( "<abuf>" ) | q | endif' ),
call( 'augroup END' ),
call( 'doautocmd User YcmLocationOpened' ),
call( 'silent! wincmd p' )
] )

View File

@ -341,9 +341,7 @@ def OpenLocationList( focus = False, autoclose = False ):
SetFittingHeightForCurrentWindow()
if autoclose:
# This autocommand is automatically removed when the location list window is
# closed.
vim.command( 'au WinLeave <buffer> q' )
AutoCloseOnCurrentBuffer( 'ycmlocation' )
if VariableExists( '#User#YcmLocationOpened' ):
vim.command( 'doautocmd User YcmLocationOpened' )
@ -368,9 +366,7 @@ def OpenQuickFixList( focus = False, autoclose = False ):
SetFittingHeightForCurrentWindow()
if autoclose:
# This autocommand is automatically removed when the quickfix window is
# closed.
vim.command( 'au WinLeave <buffer> q' )
AutoCloseOnCurrentBuffer( 'ycmquickfix' )
if VariableExists( '#User#YcmQuickFixOpened' ):
vim.command( 'doautocmd User YcmQuickFixOpened' )
@ -1238,3 +1234,13 @@ def VimVersionAtLeast( version_string ):
return actual_major_and_minor > matching_major_and_minor
return GetBoolValue( "has( 'patch{0}' )".format( patch ) )
def AutoCloseOnCurrentBuffer( name ):
"""Create an autocommand group with name |name| on the current buffer that
automatically closes it when leaving its window."""
vim.command( 'augroup {}'.format( name ) )
vim.command( 'autocmd! * <buffer>' )
vim.command( 'autocmd WinLeave <buffer> '
'if bufnr( "%" ) == expand( "<abuf>" ) | q | endif' )
vim.command( 'augroup END' )