Package: vim-youcompleteme / 0+20200825+git2afee9d+ds-2

Metadata

Package Version Patches format
vim-youcompleteme 0+20200825+git2afee9d+ds-2 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
0001 Make hover request asynchronous.patch | (download)

README.md | 46 45 + 1 - 0 !
autoload/youcompleteme.vim | 103 66 + 37 - 0 !
python/ycm/client/command_request.py | 76 52 + 24 - 0 !
python/ycm/youcompleteme.py | 48 30 + 18 - 0 !
run_tests.py | 2 1 + 1 - 0 !
test/hover.test.vim | 96 67 + 29 - 0 !
test/lib/run_test.vim | 4 4 + 0 - 0 !
7 files changed, 265 insertions(+), 110 deletions(-)

 [patch] make hover request asynchronous

The hover request is enabled by default on CursorHold. It's not uncommon
for &updatetime to be set to a small value for other plugings that
update on CursorHold (even YCM used to do this).

However, previously the Hover request was _blocking_. This meant that on
a fairly large codebase, by default YCM could block Vim for many seconds
particularly on startup.

This is YCM anathema, and a big error. Therfore, as it's not easy to
unwind the "enabled by default" decision, a better resolution is to make
the request asynchronous.

This change introduces a `youcompleteme#GetCommandResponseAsync` with
the same behaviour as `youcompleteme#GetCommandResponse` but taking a
callback to handle the result. This is in turn used by the YCMHover
mapping and autocommand.

0002 don t check file size on unsupported filetypes.patch | (download)

autoload/youcompleteme.vim | 9 5 + 4 - 0 !
test/filesize.test.vim | 49 49 + 0 - 0 !
2 files changed, 54 insertions(+), 4 deletions(-)

 [patch] don't check file size on unsupported filetypes

Previously, this was providing a false negatives. Now,
if the filetype is not approved, we immediately return
without trying to finish opening it.

Signed-off-by: Kevin Morris <kevr.gtalk@gmail.com>

0003 Clarifications for ycm_filter_diagnostics in README.patch | (download)

README.md | 12 9 + 3 - 0 !
1 file changed, 9 insertions(+), 3 deletions(-)

 [patch] clarifications for ycm_filter_diagnostics in readme


0004 Vimspector add schema.patch | (download)

.vimspector.json | 1 1 + 0 - 0 !
1 file changed, 1 insertion(+)

 [patch] vimspector add schema


0005 fix coverage reports Make python coverage incrementa.patch | (download)

test/lib/run_test.vim | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch] fix coverage reports: make python coverage incremental


0006 Resolve completions on demand.patch | (download)

README.md | 208 119 + 89 - 0 !
autoload/youcompleteme.vim | 355 177 + 178 - 0 !
azure-pipelines.yml | 33 32 + 1 - 0 !
plugin/youcompleteme.vim | 46 8 + 38 - 0 !
python/ycm/base.py | 28 25 + 3 - 0 !
python/ycm/client/completion_request.py | 17 11 + 6 - 0 !
python/ycm/client/resolve_completion_request.py | 92 92 + 0 - 0 !
python/ycm/tests/client/completion_request_test.py | 4 2 + 2 - 0 !
python/ycm/tests/completion_test.py | 332 331 + 1 - 0 !
python/ycm/youcompleteme.py | 35 29 + 6 - 0 !
test/completion.common.vim | 196 99 + 97 - 0 !
test/completion.test.vim | 13 6 + 7 - 0 !
test/completion_info.test.vim | 166 166 + 0 - 0 !
test/completion_noresolve.test.vim | 15 7 + 8 - 0 !
test/docker/ci/image/Dockerfile | 9 3 + 6 - 0 !
test/lib/plugin/shared.vim | 13 13 + 0 - 0 !
test/run_vim_tests | 9 8 + 1 - 0 !
17 files changed, 1128 insertions(+), 443 deletions(-)

 [patch] resolve completions on-demand

This uses the `:help complete-popuphidden` API to show the info popup
asynchronously when the user has configured vim to use the info popup.

* we request the resolve on CompleteChanged
* we already store the extra_data in the completion user data, so we
  just pull out the resolve key from there
* when we have the resolved data, we call popup_findinfo() and then
  popup_settext() and popup_show() on that ID
* we re-use the _latest_completion_request so that we don't have
  outstanding resolve and completion requests
* we re-use the request_data from the completion request for efficiency
  and correctness (server will reject if the request data changes at
  all) we re-use the 'completion' poller, for the same reasons.

There are some caveats:

* We only want to do this if Vim supports it.
* We only want to do this if completeopt contains popup (we add
  popuphidden ourselves). Otherwise, we just break the preview window
  Some items will already be resolved, so we don't want to waste time
  re-resolving
* We should provide a way to turn off this async resolve in case the
  delay is too much or it's buggy. We use
  g:ycm_max_num_candidates_to_resolve for this with -1 meaning no limit
  (the current behaviour). We force the value of this to 10 if we're
  going to do async resolve. This is a sort of cheap 'capabilities'
  implementation for this feature.

To ensure vim supports it, we update the minimum version of vim to the
latest ubuntu LTS and update the docker image to run tests against that
too.This does mean we need to special-case neovim in a couple of places
as it reports its version as 800, but will work as before.

0007 Update ycmd.patch | (download)

README.md | 162 121 + 41 - 0 !
test/fixit.test.vim | 4 2 + 2 - 0 !
2 files changed, 123 insertions(+), 43 deletions(-)

 [patch] update ycmd.

This pulls in the following chnages:

* GoToSymbol for typescript
* RefactorRename for python
* Switch from RLS to RA
* Drop Python 3.5 support in the server
* Lots of completer version updates
* Minor build/instal fixes
* javascriptreact support
* Signature help offset support
* Correctly supplying ranges for CodeActions
* Support for TCP LSP connections
* Support for configuration sections in LSP
* Support for deferred resolve in LSP

0008 Simplify diagnostic filter.patch | (download)

python/ycm/diagnostic_filter.py | 41 6 + 35 - 0 !
1 file changed, 6 insertions(+), 35 deletions(-)

 [patch] simplify diagnostic filter


0009 fix a typo in README.md.patch | (download)

README.md | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch] fix a typo in readme.md


0010 Update vim help.patch | (download)

doc/youcompleteme.txt | 526 321 + 205 - 0 !
1 file changed, 321 insertions(+), 205 deletions(-)

 [patch] update vim help


0011 Correct go docs.patch | (download)

README.md | 6 3 + 3 - 0 !
doc/youcompleteme.txt | 6 3 + 3 - 0 !
2 files changed, 6 insertions(+), 6 deletions(-)

 [patch] correct go docs


0012 Update minimal vimrc to add encoding.patch | (download)

vimrc_ycm_minimal | 11 11 + 0 - 0 !
1 file changed, 11 insertions(+)

 [patch] update minimal vimrc to add encoding


0013 Add WSL instructions.patch | (download)

test/README.md | 20 19 + 1 - 0 !
1 file changed, 19 insertions(+), 1 deletion(-)

 [patch] add wsl instructions.


0014 Fix formatting.patch | (download)

test/README.md | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch] fix formatting


0015 Allow completion on a buffer without filetype.patch | (download)

autoload/youcompleteme.vim | 5 4 + 1 - 0 !
python/ycm/vimsupport.py | 10 8 + 2 - 0 !
test/completion.common.vim | 70 70 + 0 - 0 !
test/completion_info.test.vim | 10 5 + 5 - 0 !
test/filesize.test.vim | 3 3 + 0 - 0 !
5 files changed, 90 insertions(+), 8 deletions(-)

 [patch] allow completion on a buffer without filetype

Introduce "fake" filetype `ycm_nofiletype` that is used to handle all
buffers without filetype.

0016 Fix typos.patch | (download)

test/README.md | 4 2 + 2 - 0 !
1 file changed, 2 insertions(+), 2 deletions(-)

 [patch] fix typos

* fix "plguin"
* fix ***NOT** -- in vim markdown it spans for the rest of the file making it bold_italic.

0017 Swallow TypeError when omnicompleter puts garbage in.patch | (download)

python/ycm/client/resolve_completion_request.py | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch] swallow typeerror when omnicompleter puts garbage in
 item["user_data"]


0018 Highlight diagnostics with low priority to allow hls.patch | (download)

python/ycm/tests/test_utils.py | 2 1 + 1 - 0 !
python/ycm/vimsupport.py | 2 1 + 1 - 0 !
2 files changed, 2 insertions(+), 2 deletions(-)

 [patch] highlight diagnostics with low priority, to allow hlsearch to
 work


0019 Allow supressing the quickfix height changes.patch | (download)

python/ycm/tests/test_utils.py | 5 4 + 1 - 0 !
python/ycm/tests/vimsupport_test.py | 13 13 + 0 - 0 !
python/ycm/vimsupport.py | 3 3 + 0 - 0 !
3 files changed, 20 insertions(+), 1 deletion(-)

 [patch] allow supressing the quickfix height changes

This allows the quickfix to be made vertical, with

au FileType qf let b:ycm_no_resize = 1 <bar> wincmd L

Using the YcmQuickFixOpened/YcmLocationOpened can work (with wincmd _),
but this messes up the layout of split windows, e.g.:

:au User YcmQuickFixOpened wincmd _
:split
:YcmCOmpleter GoToSymbol User

This breaks the layout of the 2 splits (as YCM first resizes the
quickfix window with its own command, thust increasing cmdheight to
&lines - <new height>)

0020 Use python3 for vimspector.patch | (download)

.vimspector.json | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch] use python3 for vimspector


0021 Fix signature help traceback when using preview popu.patch | (download)

README.md | 18 18 + 0 - 0 !
autoload/youcompleteme.vim | 4 3 + 1 - 0 !
plugin/youcompleteme.vim | 6 6 + 0 - 0 !
test/.vimspector.json | 19 19 + 0 - 0 !
test/commands.test.vim | 21 9 + 12 - 0 !
test/completion.common.vim | 83 14 + 69 - 0 !
test/completion.test.vim | 2 0 + 2 - 0 !
test/completion_info.test.vim | 3 0 + 3 - 0 !
test/completion_noresolve.test.vim | 2 0 + 2 - 0 !
test/diagnostics.test.vim | 4 1 + 3 - 0 !
test/filesize.test.vim | 16 5 + 11 - 0 !
test/fixit.test.vim | 1 0 + 1 - 0 !
test/hover.test.vim | 23 5 + 18 - 0 !
test/lib/autoload/youcompleteme/test/setup.vim | 2 1 + 1 - 0 !
test/lib/plugin/completion.vim | 47 47 + 0 - 0 !
test/lib/plugin/util.vim | 4 4 + 0 - 0 !
test/lib/run_test.vim | 17 17 + 0 - 0 !
test/signature_help.test.vim | 218 209 + 9 - 0 !
test/testdata/cpp/complete_with_sig_help.cc | 11 11 + 0 - 0 !
19 files changed, 369 insertions(+), 132 deletions(-)

 [patch] fix signature help traceback when using preview popup

When we made YCM parse buffers with no filetype, this ended up including
the buffers within things like popups. Unfortuantely this leads to a
problem that we call "ClearSignatureHelp" from within
"FileReadyToParse". If the "FileReadyToParse" in question was within a
popup, we ge an error "Not valid in popup window" (referring to a call
to popup_close()) and vim gets in a very bad state.

it's not obvious how to solve this in the general case, but for now as
completion in non-filetype buffers is new and rare, we Blacklist enpty
buffers by default to work around the bug.

We allow users to explicitly enable it (and suffer this bug!) by
explicitly whiteliisting it again in ycm_filetype_whitelist.

Added a test which shows that it works when ycm_nofiletyp is
blacklisted, and another test which exercises the (still) broken
behaviour, when ycm_nofiletype is whitelisted.

0022 Add way to backup restore setting in tests.patch | (download)

test/completion.common.vim | 16 8 + 8 - 0 !
test/lib/autoload/youcompleteme/test/setup.vim | 31 31 + 0 - 0 !
test/signature_help.test.vim | 20 11 + 9 - 0 !
3 files changed, 50 insertions(+), 17 deletions(-)

 [patch] add way to backup/restore setting in tests

Added youcompleteme#test#setup#PushGlobal and PopGlobal, used in SetUp
and TearDown fixtures for individual test funcitons.

0023 Minimum requirements will change . soon.patch | (download)

README.md | 13 13 + 0 - 0 !
1 file changed, 13 insertions(+)

 [patch] minimum requirements will change .. soon.


0024 We will still support building with clang 7.patch | (download)

README.md | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch] we will still support building with clang 7


00 path to server script.patch | (download)

autoload/youcompleteme.vim | 20 2 + 18 - 0 !
python/ycm/base.py | 6 2 + 4 - 0 !
python/ycm/paths.py | 57 8 + 49 - 0 !
3 files changed, 12 insertions(+), 71 deletions(-)

 use debian's ycmd package locations for ycmd.
 We neither have the third_party directory for vim-youcompleteme nor
 for ycmd, so we can't import them and we don't want to either.
 .
 This means we can drop lots and lots of complicated code as we know
 by virtue of dependencies where everything is and that it is good
01 allow tests to be run.patch | (download)

python/ycm/tests/paths_test.py | 39 0 + 39 - 0 !
python/ycm/tests/youcompleteme_test.py | 57 0 + 57 - 0 !
run_tests.py | 23 0 + 23 - 0 !
3 files changed, 119 deletions(-)

 use debian's ycmd package locations for ycmd in tests
 We neither have the third_party directory for vim-youcompleteme nor
 for ycmd, so we can't import them and we don't want to either.
 .
 The two python tests are removed as we have always Python installed
 in Debian due to dependencies and the tests can for some reason not
 override this properly.
02 use old hamcrest api for tests.patch | (download)

python/ycm/tests/command_test.py | 10 5 + 5 - 0 !
python/ycm/tests/completion_test.py | 12 6 + 6 - 0 !
python/ycm/tests/event_notification_test.py | 26 13 + 13 - 0 !
python/ycm/tests/omni_completer_test.py | 10 5 + 5 - 0 !
python/ycm/tests/postcomplete_test.py | 18 9 + 9 - 0 !
python/ycm/tests/vimsupport_test.py | 24 12 + 12 - 0 !
python/ycm/tests/youcompleteme_test.py | 16 8 + 8 - 0 !
7 files changed, 58 insertions(+), 58 deletions(-)

 use old pyhamcrest api in tests
 Upstream has switched away from the deprecated contains() in
 favour of contains_exactly(), but this is not included yet in
 the version of pyhamcrest packaged in Debian, so this patch switches
 back to the old API to decouple us from the pyhamcrest update.
 .
 The patch was autogenerated by:
   sed -i 's#contains_exactly#contains#g' python/ycm/tests/*.py
03 do not override unset ycmd settings.patch | (download)

README.md | 80 53 + 27 - 0 !
doc/youcompleteme.txt | 79 52 + 27 - 0 !
plugin/youcompleteme.vim | 98 14 + 84 - 0 !
3 files changed, 119 insertions(+), 138 deletions(-)

 load ycmd default settings from its default_settings.json
 Upstream prefers to keep the configuration in one place, but as Debian has