Always supply working directory

This allows completer servers to detect the correct directory to launch
no matter what request initialises the completer server.
This commit is contained in:
Ben Jackson 2017-09-17 00:22:36 +01:00
parent 290dd94721
commit bc6ac461f3
3 changed files with 49 additions and 3 deletions

View File

@ -28,7 +28,7 @@ import json
from future.utils import native from future.utils import native
from base64 import b64decode, b64encode from base64 import b64decode, b64encode
from ycm import vimsupport from ycm import vimsupport
from ycmd.utils import ToBytes, urljoin, urlparse from ycmd.utils import ToBytes, urljoin, urlparse, GetCurrentDirectory
from ycmd.hmac_utils import CreateRequestHmac, CreateHmac, SecureBytesEqual from ycmd.hmac_utils import CreateRequestHmac, CreateHmac, SecureBytesEqual
from ycmd.responses import ServerError, UnknownExtraConf from ycmd.responses import ServerError, UnknownExtraConf
@ -156,6 +156,7 @@ def BuildRequestData( filepath = None ):
"""Build request for the current buffer or the buffer corresponding to """Build request for the current buffer or the buffer corresponding to
|filepath| if specified.""" |filepath| if specified."""
current_filepath = vimsupport.GetCurrentBufferFilepath() current_filepath = vimsupport.GetCurrentBufferFilepath()
working_dir = GetCurrentDirectory()
if filepath and current_filepath != filepath: if filepath and current_filepath != filepath:
# Cursor position is irrelevant when filepath is not the current buffer. # Cursor position is irrelevant when filepath is not the current buffer.
@ -163,6 +164,7 @@ def BuildRequestData( filepath = None ):
'filepath': filepath, 'filepath': filepath,
'line_num': 1, 'line_num': 1,
'column_num': 1, 'column_num': 1,
'working_dir': working_dir,
'file_data': vimsupport.GetUnsavedAndSpecifiedBufferData( filepath ) 'file_data': vimsupport.GetUnsavedAndSpecifiedBufferData( filepath )
} }
@ -172,6 +174,7 @@ def BuildRequestData( filepath = None ):
'filepath': current_filepath, 'filepath': current_filepath,
'line_num': line + 1, 'line_num': line + 1,
'column_num': column + 1, 'column_num': column + 1,
'working_dir': working_dir,
'file_data': vimsupport.GetUnsavedAndSpecifiedBufferData( current_filepath ) 'file_data': vimsupport.GetUnsavedAndSpecifiedBufferData( current_filepath )
} }

View File

@ -0,0 +1,45 @@
# Copyright (C) 2017 YouCompleteMe Contributors
#
# This file is part of YouCompleteMe.
#
# YouCompleteMe is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# YouCompleteMe is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with YouCompleteMe. If not, see <http://www.gnu.org/licenses/>.
from __future__ import unicode_literals
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
# Not installing aliases from python-future; it's unreliable and slow.
from builtins import * # noqa
from ycm.tests.test_utils import MockVimModule
MockVimModule()
from hamcrest import assert_that, has_entry
from mock import patch
from ycm.client.base_request import BuildRequestData
@patch( 'ycm.client.base_request.GetCurrentDirectory',
return_value = '/some/dir' )
@patch( 'ycm.vimsupport.CurrentLineAndColumn', return_value = ( 1, 1 ) )
def BuildRequestData_AddWorkingDir_test( *args ):
assert_that( BuildRequestData(), has_entry( 'working_dir', '/some/dir' ) )
@patch( 'ycm.client.base_request.GetCurrentDirectory',
return_value = '/some/dir' )
@patch( 'ycm.vimsupport.CurrentLineAndColumn', return_value = ( 1, 1 ) )
def BuildRequestData_AddWorkingDirWithFileName_test( *args ):
assert_that( BuildRequestData( 'foo' ),
has_entry( 'working_dir', '/some/dir' ) )

View File

@ -299,8 +299,6 @@ class YouCompleteMe( object ):
self._latest_completion_request.Start() self._latest_completion_request.Start()
return return
request_data[ 'working_dir' ] = utils.GetCurrentDirectory()
self._AddExtraConfDataIfNeeded( request_data ) self._AddExtraConfDataIfNeeded( request_data )
self._latest_completion_request = CompletionRequest( request_data ) self._latest_completion_request = CompletionRequest( request_data )
self._latest_completion_request.Start() self._latest_completion_request.Start()