123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/usr/bin/env python
- #
- # Copyright (C) 2013 Strahinja Val Markovic <val@markovic.io>
- #
- # 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 ycm import base
- from ycm import vimsupport
- from ycm.client.base_request import BaseRequest, BuildRequestData
- class CompletionRequest( BaseRequest ):
- def __init__( self ):
- super( CompletionRequest, self ).__init__()
- self._completion_start_column = base.CompletionStartColumn()
- self._request_data = BuildRequestData( self._completion_start_column )
- # TODO: Do we need this anymore?
- # def ShouldComplete( self ):
- # return ( self._do_filetype_completion or
- # self._ycm_state.ShouldUseGeneralCompleter( self._request_data ) )
- def CompletionStartColumn( self ):
- return self._completion_start_column
- def Start( self, query ):
- self._request_data[ 'query' ] = query
- self._response = self.PostDataToHandler( self._request_data,
- 'get_completions' )
- def Results( self ):
- if not self._response:
- return []
- try:
- return [ _ConvertCompletionDataToVimData( x ) for x in self._response ]
- except Exception as e:
- vimsupport.PostVimMessage( str( e ) )
- return []
- def _ConvertCompletionDataToVimData( completion_data ):
- # see :h complete-items for a description of the dictionary fields
- vim_data = {
- 'word' : completion_data[ 'insertion_text' ],
- 'dup' : 1,
- }
- if 'menu_text' in completion_data:
- vim_data[ 'abbr' ] = completion_data[ 'menu_text' ]
- if 'extra_menu_info' in completion_data:
- vim_data[ 'menu' ] = completion_data[ 'extra_menu_info' ]
- if 'kind' in completion_data:
- vim_data[ 'kind' ] = completion_data[ 'kind' ]
- if 'detailed_info' in completion_data:
- vim_data[ 'info' ] = completion_data[ 'detailed_info' ]
- return vim_data
|