Auto merge of #3174 - micbou:clang-fixit-completion, r=bstaletic

[READY] Update ycmd

Include the following changes:

 - PR Valloric/ycmd#1080: replace Boost canonical function with our own implementation;
 - PR Valloric/ycmd#1104: improve filename completer;
 - PR Valloric/ycmd#1121: support completion FixIts for C-family languages;
 - PR Valloric/ycmd#1122: update jdt.ls to 0.26.0;
 - PR Valloric/ycmd#1123: install fixed version of TypeScript in third-party folder;
 - PR Valloric/ycmd#1124: only add the necessary directories to Python path.

Fixes #3173.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/valloric/youcompleteme/3174)
<!-- Reviewable:end -->
This commit is contained in:
zzbot 2018-11-17 21:41:09 -08:00 committed by GitHub
commit ff0a62bd15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 55 additions and 106 deletions

View File

@ -213,8 +213,8 @@ The following additional language support options are available:
`install.py`. `install.py`.
- Go support: install [Go][go-install] and add `--go-completer` when calling - Go support: install [Go][go-install] and add `--go-completer` when calling
`install.py`. `install.py`.
- JavaScript and TypeScript support: install [Node.js and npm][npm-install] then - JavaScript and TypeScript support: install [Node.js and npm][npm-install] and
install the TypeScript SDK with `npm install -g typescript`. add `--ts-completer` when calling `install.py`.
- Rust support: install [Rust][rust-install] and add - Rust support: install [Rust][rust-install] and add
`--rust-completer` when calling `install.py`. `--rust-completer` when calling `install.py`.
- Java support: install [JDK8 (version 8 required)][jdk-install] and add - Java support: install [JDK8 (version 8 required)][jdk-install] and add
@ -286,8 +286,8 @@ The following additional language support options are available:
when calling `install.py`. when calling `install.py`.
- Go support: install [Go][go-install] and add `--go-completer` when calling - Go support: install [Go][go-install] and add `--go-completer` when calling
`install.py`. `install.py`.
- JavaScript and TypeScript support: install [Node.js and npm][npm-install] then - JavaScript and TypeScript support: install [Node.js and npm][npm-install] and
install the TypeScript SDK with `npm install -g typescript`. add `--ts-completer` when calling `install.py`.
- Rust support: install [Rust][rust-install] and add `--rust-completer` when - Rust support: install [Rust][rust-install] and add `--rust-completer` when
calling `install.py`. calling `install.py`.
- Java support: install [JDK8 (version 8 required)][jdk-install] and add - Java support: install [JDK8 (version 8 required)][jdk-install] and add
@ -377,8 +377,8 @@ The following additional language support options are available:
Be sure that [the build utility `msbuild` is in your PATH][add-msbuild-to-path]. Be sure that [the build utility `msbuild` is in your PATH][add-msbuild-to-path].
- Go support: install [Go][go-install] and add `--go-completer` when calling - Go support: install [Go][go-install] and add `--go-completer` when calling
`install.py`. `install.py`.
- JavaScript and TypeScript support: install [Node.js and npm][npm-install] then - JavaScript and TypeScript support: install [Node.js and npm][npm-install] and
install the TypeScript SDK with `npm install -g typescript`. add `--ts-completer` when calling `install.py`.
- Rust support: install [Rust][rust-install] and add `--rust-completer` when - Rust support: install [Rust][rust-install] and add `--rust-completer` when
calling `install.py`. calling `install.py`.
- Java support: install [JDK8 (version 8 required)][jdk-install] and add - Java support: install [JDK8 (version 8 required)][jdk-install] and add
@ -449,8 +449,8 @@ The following additional language support options are available:
`./install.py`. `./install.py`.
- Go support: install [Go][go-install] and add `--go-completer` when calling - Go support: install [Go][go-install] and add `--go-completer` when calling
`./install.py`. `./install.py`.
- JavaScript and TypeScript support: install [Node.js and npm][npm-install] then - JavaScript and TypeScript support: install [Node.js and npm][npm-install] and
install the TypeScript SDK with `npm install -g typescript`. add `--ts-completer` when calling `install.py`.
- Rust support: install [Rust][rust-install] and add `--rust-completer` when - Rust support: install [Rust][rust-install] and add `--rust-completer` when
calling `./install.py`. calling `./install.py`.
- Java support: install [JDK8 (version 8 required)][jdk-install] and add - Java support: install [JDK8 (version 8 required)][jdk-install] and add
@ -659,9 +659,9 @@ process.
- Go support: install [Go][go-install] and add it to your path. Navigate to - Go support: install [Go][go-install] and add it to your path. Navigate to
`YouCompleteMe/third_party/ycmd/third_party/gocode` and run `go build`. `YouCompleteMe/third_party/ycmd/third_party/gocode` and run `go build`.
- JavaScript and TypeScript support: as with the quick installation, simply - JavaScript and TypeScript support: install [Node.js and npm][npm-install],
`npm install -g typescript` after successfully installing [Node.js and navigate to `YouCompleteMe/third_party/ycmd` and run
npm][npm-install]. `npm install -g --prefix third_party/tsserver typescript`.
- Rust support: install [Rust][rust-install]. Navigate to - Rust support: install [Rust][rust-install]. Navigate to
`YouCompleteMe/third_party/ycmd/third_party/racerd` and run `cargo build `YouCompleteMe/third_party/ycmd/third_party/racerd` and run `cargo build
@ -696,7 +696,7 @@ Quick Feature Summary
### C-family languages (C, C++, Objective C, Objective C++, CUDA) ### C-family languages (C, C++, Objective C, Objective C++, CUDA)
* Semantic auto-completion * Semantic auto-completion with automatic fixes
* Real-time diagnostic display * Real-time diagnostic display
* Go to include/declaration/definition (`GoTo`, etc.) * Go to include/declaration/definition (`GoTo`, etc.)
* Semantic type information for identifiers (`GetType`) * Semantic type information for identifiers (`GetType`)
@ -1290,11 +1290,10 @@ installation. Further instructions on how to setup YCM with [Tern][] are
available on [the wiki][tern-instructions]. available on [the wiki][tern-instructions].
All JavaScript and TypeScript features are provided by the [TSServer][] engine, All JavaScript and TypeScript features are provided by the [TSServer][] engine,
which is included in the TypeScript SDK. To get the SDK, install [Node.js and which is included in the TypeScript SDK. To enable these features, install
npm][npm-install] and run the command: [Node.js and npm][npm-install] and call the `install.py` script with the
``` `--ts-completer` flag.
npm install -g typescript
```
[TSServer][] relies on [the `jsconfig.json` file][jsconfig.json] for JavaScript [TSServer][] relies on [the `jsconfig.json` file][jsconfig.json] for JavaScript
and [the `tsconfig.json` file][tsconfig.json] for TypeScript to analyze your and [the `tsconfig.json` file][tsconfig.json] for TypeScript to analyze your
project. Ensure the file exists at the root of your project. project. Ensure the file exists at the root of your project.
@ -1309,11 +1308,6 @@ To get diagnostics in JavaScript, set the `checkJs` option to `true` in your
} }
``` ```
TypeScript 2.8.1 or later is recommended. Some features will be missing on older
versions. You can check which version you are currently using by looking at the
output of [`:YcmDebugInfo` ](#the-ycmdebuginfo-command). If the version is
`None`, your TypeScript is too old and should be updated.
### Semantic Completion for Other Languages ### Semantic Completion for Other Languages
C-family, C#, Go, Java, Python, Rust, and JavaScript/TypeScript languages are C-family, C#, Go, Java, Python, Rust, and JavaScript/TypeScript languages are

View File

@ -410,8 +410,8 @@ The following additional language support options are available:
- Go support: install Go [28] and add '--go-completer' when calling - Go support: install Go [28] and add '--go-completer' when calling
'install.py'. 'install.py'.
- JavaScript and TypeScript support: install Node.js and npm [29] then - JavaScript and TypeScript support: install Node.js and npm [29] and add
install the TypeScript SDK with 'npm install -g typescript'. '--ts-completer' when calling 'install.py'.
- Rust support: install Rust [30] and add '--rust-completer' when calling - Rust support: install Rust [30] and add '--rust-completer' when calling
'install.py'. 'install.py'.
@ -488,8 +488,8 @@ The following additional language support options are available:
- Go support: install Go [28] and add '--go-completer' when calling - Go support: install Go [28] and add '--go-completer' when calling
'install.py'. 'install.py'.
- JavaScript and TypeScript support: install Node.js and npm [29] then - JavaScript and TypeScript support: install Node.js and npm [29] and add
install the TypeScript SDK with 'npm install -g typescript'. '--ts-completer' when calling 'install.py'.
- Rust support: install Rust [30] and add '--rust-completer' when calling - Rust support: install Rust [30] and add '--rust-completer' when calling
'install.py'. 'install.py'.
@ -585,8 +585,8 @@ The following additional language support options are available:
- Go support: install Go [28] and add '--go-completer' when calling - Go support: install Go [28] and add '--go-completer' when calling
'install.py'. 'install.py'.
- JavaScript and TypeScript support: install Node.js and npm [29] then - JavaScript and TypeScript support: install Node.js and npm [29] and add
install the TypeScript SDK with 'npm install -g typescript'. '--ts-completer' when calling 'install.py'.
- Rust support: install Rust [30] and add '--rust-completer' when calling - Rust support: install Rust [30] and add '--rust-completer' when calling
'install.py'. 'install.py'.
@ -661,8 +661,8 @@ The following additional language support options are available:
- Go support: install Go [28] and add '--go-completer' when calling - Go support: install Go [28] and add '--go-completer' when calling
'./install.py'. './install.py'.
- JavaScript and TypeScript support: install Node.js and npm [29] then - JavaScript and TypeScript support: install Node.js and npm [29] and add
install the TypeScript SDK with 'npm install -g typescript'. '--ts-completer' when calling 'install.py'.
- Rust support: install Rust [30] and add '--rust-completer' when calling - Rust support: install Rust [30] and add '--rust-completer' when calling
'./install.py'. './install.py'.
@ -878,9 +878,9 @@ will notify you to recompile it. You should then rerun the install process.
'YouCompleteMe/third_party/ycmd/third_party/gocode' and run 'go 'YouCompleteMe/third_party/ycmd/third_party/gocode' and run 'go
build'. build'.
- JavaScript and TypeScript support: as with the quick installation, - JavaScript and TypeScript support: install Node.js and npm [29],
simply 'npm install -g typescript' after successfully installing navigate to 'YouCompleteMe/third_party/ycmd' and run 'npm install -g
Node.js and npm [29]. --prefix third_party/tsserver typescript'.
- Rust support: install Rust [30]. Navigate to - Rust support: install Rust [30]. Navigate to
'YouCompleteMe/third_party/ycmd/third_party/racerd' and run 'cargo 'YouCompleteMe/third_party/ycmd/third_party/racerd' and run 'cargo
@ -920,7 +920,7 @@ General (all languages) ~
*youcompleteme-c-family-languages* *youcompleteme-c-family-languages*
C-family languages (C, C++, Objective C, Objective C++, CUDA) ~ C-family languages (C, C++, Objective C, Objective C++, CUDA) ~
- Semantic auto-completion - Semantic auto-completion with automatic fixes
- Real-time diagnostic display - Real-time diagnostic display
- Go to include/declaration/definition (|GoTo|, etc.) - Go to include/declaration/definition (|GoTo|, etc.)
- Semantic type information for identifiers (|GetType|) - Semantic type information for identifiers (|GetType|)
@ -1514,11 +1514,10 @@ installation. Further instructions on how to setup YCM with Tern [63] are
available on the wiki [64]. available on the wiki [64].
All JavaScript and TypeScript features are provided by the TSServer [16] All JavaScript and TypeScript features are provided by the TSServer [16]
engine, which is included in the TypeScript SDK. To get the SDK, install engine, which is included in the TypeScript SDK. To enable these features,
Node.js and npm [29] and run the command: install Node.js and npm [29] and call the 'install.py' script with the '--ts-
> completer' flag.
npm install -g typescript
<
TSServer [16] relies on the 'jsconfig.json' file [65] for JavaScript and the TSServer [16] relies on the 'jsconfig.json' file [65] for JavaScript and the
'tsconfig.json' file [66] for TypeScript to analyze your project. Ensure the 'tsconfig.json' file [66] for TypeScript to analyze your project. Ensure the
file exists at the root of your project. file exists at the root of your project.
@ -1532,11 +1531,6 @@ To get diagnostics in JavaScript, set the 'checkJs' option to 'true' in your
} }
} }
< <
TypeScript 2.8.1 or later is recommended. Some features will be missing on
older versions. You can check which version you are currently using by looking
at the output of |:YcmDebugInfo|. If the version is 'None', your TypeScript is
too old and should be updated.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
*youcompleteme-semantic-completion-for-other-languages* *youcompleteme-semantic-completion-for-other-languages*
Semantic Completion for Other Languages ~ Semantic Completion for Other Languages ~
@ -3630,7 +3624,7 @@ http://valloric.github.io/YouCompleteMe/.
The author's homepage is http://val.markovic.io. The author's homepage is http://val.markovic.io.
Please do **NOT** go to #vim on freenode for support. Please contact the Please do **NOT** go to #vim on freenode for support. Please contact the
YouCompleteMe maintainers directly using the contact details below. YouCompleteMe maintainers directly using the contact details.
=============================================================================== ===============================================================================
*youcompleteme-license* *youcompleteme-license*

View File

@ -23,7 +23,6 @@ from __future__ import absolute_import
from builtins import * # noqa from builtins import * # noqa
import logging import logging
from future.utils import iteritems
from ycmd.utils import ToUnicode from ycmd.utils import ToUnicode
from ycm.client.base_request import ( BaseRequest, DisplayServerException, from ycm.client.base_request import ( BaseRequest, DisplayServerException,
MakeServerException ) MakeServerException )
@ -38,12 +37,6 @@ class CompletionRequest( BaseRequest ):
super( CompletionRequest, self ).__init__() super( CompletionRequest, self ).__init__()
self.request_data = request_data self.request_data = request_data
self._response_future = None self._response_future = None
self._complete_done_hooks = {
'cs': self._OnCompleteDone_Csharp,
'java': self._OnCompleteDone_FixIt,
'javascript': self._OnCompleteDone_FixIt,
'typescript': self._OnCompleteDone_FixIt,
}
def Start( self ): def Start( self ):
@ -88,16 +81,10 @@ class CompletionRequest( BaseRequest ):
if not self.Done(): if not self.Done():
return return
complete_done_actions = self._GetCompleteDoneHooks() if 'cs' in vimsupport.CurrentFiletypes():
for action in complete_done_actions: self._OnCompleteDone_Csharp()
action() else:
self._OnCompleteDone_FixIt()
def _GetCompleteDoneHooks( self ):
filetypes = vimsupport.CurrentFiletypes()
for key, value in iteritems( self._complete_done_hooks ):
if key in filetypes:
yield value
def _GetCompletionsUserMayHaveCompleted( self ): def _GetCompletionsUserMayHaveCompleted( self ):

View File

@ -133,63 +133,37 @@ def _SetUpCompleteDone( completions ):
yield request yield request
@patch( 'ycm.vimsupport.CurrentFiletypes', return_value = [ 'cs' ] )
def GetCompleteDoneHooks_ResultOnCsharp_test( *args ):
request = CompletionRequest( None )
result = list( request._GetCompleteDoneHooks() )
eq_( result, [ request._OnCompleteDone_Csharp ] )
@patch( 'ycm.vimsupport.CurrentFiletypes', return_value = [ 'java' ] )
def GetCompleteDoneHooks_ResultOnJava_test( *args ):
request = CompletionRequest( None )
result = list( request._GetCompleteDoneHooks() )
eq_( result, [ request._OnCompleteDone_FixIt ] )
@patch( 'ycm.vimsupport.CurrentFiletypes', return_value = [ 'typescript' ] )
def GetCompleteDoneHooks_ResultOnTypeScript_test( *args ):
request = CompletionRequest( None )
result = list( request._GetCompleteDoneHooks() )
eq_( result, [ request._OnCompleteDone_FixIt ] )
@patch( 'ycm.vimsupport.CurrentFiletypes', return_value = [ 'ycmtest' ] ) @patch( 'ycm.vimsupport.CurrentFiletypes', return_value = [ 'ycmtest' ] )
def GetCompleteDoneHooks_EmptyOnOtherFiletype_test( *args ): def OnCompleteDone_DefaultFixIt_test( *args ):
request = CompletionRequest( None )
result = request._GetCompleteDoneHooks()
eq_( len( list( result ) ), 0 )
@patch( 'ycm.vimsupport.CurrentFiletypes', return_value = [ 'ycmtest' ] )
def OnCompleteDone_WithActionCallsIt_test( *args ):
request = CompletionRequest( None )
request.Done = MagicMock( return_value = True )
action = MagicMock()
request._complete_done_hooks[ 'ycmtest' ] = action
request.OnCompleteDone()
ok_( action.called )
@patch( 'ycm.vimsupport.CurrentFiletypes', return_value = [ 'ycmtest' ] )
def OnCompleteDone_NoActionNoError_test( *args ):
request = CompletionRequest( None ) request = CompletionRequest( None )
request.Done = MagicMock( return_value = True ) request.Done = MagicMock( return_value = True )
request._OnCompleteDone_Csharp = MagicMock() request._OnCompleteDone_Csharp = MagicMock()
request._OnCompleteDone_FixIt = MagicMock() request._OnCompleteDone_FixIt = MagicMock()
request.OnCompleteDone() request.OnCompleteDone()
request._OnCompleteDone_Csharp.assert_not_called() request._OnCompleteDone_Csharp.assert_not_called()
request._OnCompleteDone_FixIt.assert_called_once_with()
@patch( 'ycm.vimsupport.CurrentFiletypes', return_value = [ 'cs' ] )
def OnCompleteDone_CsharpFixIt_test( *args ):
request = CompletionRequest( None )
request.Done = MagicMock( return_value = True )
request._OnCompleteDone_Csharp = MagicMock()
request._OnCompleteDone_FixIt = MagicMock()
request.OnCompleteDone()
request._OnCompleteDone_Csharp.assert_called_once_with()
request._OnCompleteDone_FixIt.assert_not_called() request._OnCompleteDone_FixIt.assert_not_called()
@patch( 'ycm.vimsupport.CurrentFiletypes', return_value = [ 'ycmtest' ] ) @patch( 'ycm.vimsupport.CurrentFiletypes', return_value = [ 'ycmtest' ] )
def OnCompleteDone_NoActionIfNotDone_test( *args ): def OnCompleteDone_NoFixItIfNotDone_test( *args ):
request = CompletionRequest( None ) request = CompletionRequest( None )
request.Done = MagicMock( return_value = False ) request.Done = MagicMock( return_value = False )
action = MagicMock() request._OnCompleteDone_Csharp = MagicMock()
request._complete_done_hooks[ 'ycmtest' ] = action request._OnCompleteDone_FixIt = MagicMock()
request.OnCompleteDone() request.OnCompleteDone()
action.assert_not_called() request._OnCompleteDone_Csharp.assert_not_called()
request._OnCompleteDone_FixIt.assert_not_called()
def FilterToCompletedCompletions_MatchIsReturned_test(): def FilterToCompletedCompletions_MatchIsReturned_test():

2
third_party/ycmd vendored

@ -1 +1 @@
Subproject commit ae8a33f87a116092639ba164a712960886890a1c Subproject commit 0e999dbee209ea79a522259816ce3a68b7d6cddc