[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 -->
The completion info field may contain null characters e.g. \x00 in
Python docstrings. These characters cannot be evaluated so they are
removed.
Rewrite the function that convert ycmd completion to Vim completion.
Java completer can include FixIts which are applied when a completion
entry is selected. We use the existing mechanism implemented for c-sharp
to perform these edits using the CompleteDone autocommand.
However, the existing mechanism relies on pattern matching the source to
work out which item was completed. Vim patch 8.0.1493 introduces support
for user_data on completion items, so when available we populate it with
the completion array index of the item and use that to get the exact
element that was selected. This is both a lot faster and a lot more
accirate.
Of course when applying these 'FixIts' we don't interrupt the user with
confirmation or the quickfix list as this would just be annoying. If the
server reports that an edit must be made, we just make the edit. This is
achieved by adding a silent flag to ReplaceChunks.