Vim doesn't move the cursor accordingly when its position is on the last line
of the replaced area after its ending column because the whole line is
replaced. The cursor must be manually moved in that case.
Contrarily to what the docs say, Vim only stops completion if the value
returned by the omnifunc is -3 or -2. In other cases, if the value is negative
or greater than the current column, the start column is set to the current
column; otherwise, the value is used as the start column.
[READY] Add CUDA to C-family languages in documentation
Add CUDA to the list of C-family languages in the docs and use the "C-family languages" expression when appropriate (instead of enumerating each language).
<!-- 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/3123)
<!-- Reviewable:end -->
[READY] Update Python documentation and add extra conf file
This PR updates the Python docs and adds a `.ycm_extra_conf.py` file to be able to complete third-party packages in YCM code.
<!-- 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/3113)
<!-- Reviewable:end -->
[READY] Move cursor to start column before calling again omnifunc
Vim internally moves the cursor to the start column before calling the omnifunc a second time. This can be confirmed by starting Vim with the following vimrc:
```vim
set nocompatible
function! Omnifunc(findstart, base)
echom col('.')
if a:findstart
if getline('.') == 'foo.ba'
return 4
endif
endif
return [ 'bar', 'baz']
endfunction
set omnifunc=Omnifunc
```
typing `foo.ba`, and hitting `<C-X><C-O>`. This outputs `7` and `5` on the command line which means that the cursor at column 7 on the first call of the omnifunc is moved to column 5 on the second call.
Since some omnifuncs depend on this to compute the list of candidates (e.g. the one defined by [the LanguageClient-neovim plugin](https://github.com/autozimu/LanguageClient-neovim)), we should reproduce that behavior in YCM.
Fixes https://github.com/Valloric/YouCompleteMe/issues/3099.
<!-- 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/3112)
<!-- Reviewable:end -->
[READY] Ignore tests in codecov configuration
I don't know why but codecov includes the `tests` folder in its coverage report since [we migrated to Python 3.7 on AppVeyor](2d213e7ed2). Ignoring the folder in codecov configuration file like [we already do in the ycmd repository](ea58cfcf50/codecov.yml (L16-L25)) fixes the issue.
<!-- 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/3108)
<!-- Reviewable:end -->
Vim internally moves the cursor to the start column before calling again the
omnifunc. Some omnifuncs like the one defined by the LanguageClient-neovim
plugin depend on this behavior to compute the list of candidates.
[READY] Support modifiers for GoTo commands
This PR allows users to customize how a window is split when running the `GoTo*` commands by prefixing them with the modifiers `:aboveleft`, `:belowright`, `:botright`, etc. (see `:h mods` for the complete list). For instance, to split a window vertically at the right of the screen, one could do:
```viml
:botright vertical YcmCompleter GoTo
```
The `'horizontal-split'` and `'vertical-split'` values of the `g:ycm_goto_buffer_command` option are replaced by `'split'` since a vertical split can be obtained by prefixing the `:vertical` modifier. Those values are still kept for backward compatibility.
A new value is added `'split-or-existing-window'` that is equivalent to `new-or-existing-tab` when the `:tab` modifier is used. Without the `:tab` modifier, the `GoTo*` commands only jump to an existing window if that window is in the current tab page.
Closes https://github.com/Valloric/YouCompleteMe/pull/3090.
<!-- 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/3091)
<!-- Reviewable:end -->
Include the following changes:
- rewrite Python completer;
- prioritize compilation database over global extra conf;
- use TypeScript completer for JavaScript;
- fix GetDoc command on symbols declared in system headers;
- handle FlagsForFile returning nothing;
- update Unicode Standard to 11.0.0;
- inform user if maximum number of diagnostics is exceeded;
- add the regex module to sys.path in ycmd exclusively;
- include Jedi performance improvements;
- migrate the Clang completer to Settings in extra conf;
- use node only if tsserver is supposed to run through it;
- add option to disable the filepath completer.
[READY] Update diagnostic matches for all windows
Since the `getmatches` and `setmatches` Vim functions only allow manipulating matches for the current window, we shouldn't update diagnostic matches if the buffer is not the current window.
<!-- 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/3024)
<!-- Reviewable:end -->
[READY] Anaconda python FAQ
# PR Prelude
Thank you for working on YCM! :)
**Please complete these steps and check these boxes (by putting an `x` inside
the brackets) _before_ filing your PR:**
- [x] I have read and understood YCM's [CONTRIBUTING][cont] document.
- [x] I have read and understood YCM's [CODE_OF_CONDUCT][code] document.
- [x] I have included tests for the changes in my PR. If not, I have included a
rationale for why I haven't.
- [x] **I understand my PR may be closed if it becomes obvious I didn't
actually perform all of these steps.**
# Why this change is necessary and useful
Since the latest anaconda works with YCM, let's just state that it is not supported in the README.
[Please explain **in detail** why the changes in this PR are needed.]
[cont]: https://github.com/Valloric/YouCompleteMe/blob/master/CONTRIBUTING.md
[code]: https://github.com/Valloric/YouCompleteMe/blob/master/CODE_OF_CONDUCT.md
<!-- 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/3013)
<!-- Reviewable:end -->
[READY] Fix YcmShowDetailedDiagnostic command on line without diagnostic
The `YcmShowDetailedDiagnostic` command raises a `NoneType` exception on a line with no diagnostic;
```
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "YouCompleteMe/autoload\..\python\ycm\youcompleteme.py", line 663, in ShowDetailedDiagnostic
if 'message' in detailed_diagnostic:
TypeError: argument of type 'NoneType' is not iterable
```
<!-- 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/3035)
<!-- Reviewable:end -->
Add CUDA support
# PR Prelude
Thank you for working on YCM! :)
**Please complete these steps and check these boxes (by putting an `x` inside
the brackets) _before_ filing your PR:**
- [x] I have read and understood YCM's [CONTRIBUTING][cont] document.
- [x] I have read and understood YCM's [CODE_OF_CONDUCT][code] document.
- [ ] I have included tests for the changes in my PR. If not, I have included a
rationale for why I haven't.
- [x] **I understand my PR may be closed if it becomes obvious I didn't
actually perform all of these steps.**
# Why this change is necessary and useful
This PR follows Valloric/ycmd#1031. The specific changes are listed below:
- enable linting for cuda files
- disable syntastic for cuda files
- update docs
I have not included tests because there are no tests for the C++ counterparts.
[Please explain **in detail** why the changes in this PR are needed.]
[cont]: https://github.com/Valloric/YouCompleteMe/blob/master/CONTRIBUTING.md
[code]: https://github.com/Valloric/YouCompleteMe/blob/master/CODE_OF_CONDUCT.md
<!-- 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/3034)
<!-- Reviewable:end -->
Include the following changes:
- fix issues reported by the flake8-comprehension plugin
- fix regex used to complete include statement
- upgrade regex submodule
- cache flags by file and client data
- upgrade jdt.ls to snapshot 0.18.0
- prevent users from modifying extra conf data
- clang-tidy: performance checks
- api: only split lines on line feed characters (\n)
- remove unused enumerate()
- add tests simulating completer's shutdown timing out
- clang tidy support
- add CUDA support