Commit Graph

2176 Commits

Author SHA1 Message Date
Homu
cd6a16f0ae Auto merge of #1901 - oblitum:use-TextChangedI-when-available, r=micbou
[READY] Bumps required Vim to 7.4.143 and adopts TextChangedI.

Long and personal experience, when TextChangedI gets used, YCM seems
to perform better, diagnostics will trigger much less frequently at
inappropriate occasions, even less with whitespace agnostic triggers,
if I recall correctly...

There's a previous discussion at #1337. At the time this change was bundled in
a single pull request with other changes.

It has gone through the test of the time, sole issue I've stumbled upon was reported
by @puremourning at https://github.com/oblitum/YouCompleteMe/issues/10. This
is what me and other users of my fork use daily.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/valloric/youcompleteme/1901)
<!-- Reviewable:end -->
2016-10-01 21:46:05 +09:00
Homu
f928f7dd97 Auto merge of #2346 - micbou:documentation-server-subcommand, r=Valloric
[READY] Update miscellaneous commands in documentation

With PR https://github.com/Valloric/ycmd/pull/506, we removed the `StartServer` subcommand in favor of the `RestartServer` one and we hid the `StopServer` subcommand from the user. Update the documentation to reflect this.

<!-- 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/2346)
<!-- Reviewable:end -->
2016-09-21 06:02:13 +09:00
Homu
d2cda80398 Auto merge of #2344 - micbou:documentation-semantic-completion-other-languages, r=Valloric
[READY] Mention all natively supported languages in documentation

We mention all supported languages except C-family languages and JavaScript in the `Semantic Completion for Other Languages` section of the documentation. Add them.

<!-- 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/2344)
<!-- Reviewable:end -->
2016-09-21 06:00:54 +09:00
Francisco Lopes
54474c448c Remove obsolete FAQ entry 2016-09-19 18:36:41 -03:00
micbou
35f594ff1c
Update miscellaneous commands in documentation
Remove StartServer and StopServer subcommands from documentation.
Update the list of languages supporting the RestartServer subcommand.
2016-09-19 15:33:32 +02:00
micbou
1a93583a4a
Mention all natively supported languages 2016-09-18 15:11:12 +02:00
Francisco Lopes
362e4df713 Better wording 2016-09-17 19:30:54 -03:00
Francisco Lopes
a3ee4a5bfc Remove unused variable 2016-09-17 17:05:50 -03:00
Francisco Lopes
5576c9cf09 Bump Vim version a bit more to 7.4.143.
Reason:

  A fix has been applied to bring back triggering of TextChangedI events.

- e21b6b2a8d
2016-09-16 17:41:40 -03:00
Francisco Lopes
85bdbdb206 Bump minimun Vim version to 7.4. 2016-09-16 17:41:40 -03:00
Francisco Lopes
1b72bc2fbf Use native TextChangedI instead of an emulation.
Long and personal experience, when TextChangedI gets used, YCM seems
to perform better, diagnostics will trigger much less frequently at
inappropriate occasions, even less with whitespace agnostic triggers,
if I recall correctly...
2016-09-16 17:41:39 -03:00
Homu
6bafb6c272 Auto merge of #2329 - micbou:keyboard-interrupt, r=vheon
[READY] Handle keyboard interruption when evaluating Vim expression with user input

When evaluating a Vim expression in Python that involves code expecting user input (e.g. `input()`, `inputlist()`, `complete_check()`, etc.), if this evaluation is interrupted by the user (with `CTRL-C` for instance), Vim will pass the interruption to the Python interpreter which in turn will raise a `KeyboardInterrupt` exception. We don't want these exceptions to be displayed to the user (because the way Vim handles Python exceptions is really annoying) so we catch them where appropriate.

Fixes #2289.

<!-- 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/2329)
<!-- Reviewable:end -->
2016-09-15 00:02:26 +09:00
micbou
981a07ded7
Handle keyboard interruption from Vim 2016-09-13 00:53:31 +02:00
Homu
30871bcebb Auto merge of #2321 - micbou:improve-ultisnips-support, r=micbou
[READY] Do not depend on UltiSnips internals to fetch snippets

Use the `UltiSnips#SnippetsInCurrentScope` public function instead of the `UltiSnips_Manager` internal object to fetch snippets. Fixes #2320.

Give a workaround in the FAQ for snippets not suggested as candidates if added with the `:UltiSnipsAddFiletypes` command.

<!-- 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/2321)
<!-- Reviewable:end -->
2016-09-12 00:52:17 +09:00
micbou
5dca552d5d
Do not depend on UltiSnips internals
Use UltiSnips#SnippetsInCurrentScope to fetch snippets.
Add an entry in the FAQ about the :UltiSnipsAddFiletypes command.
2016-09-11 17:11:32 +02:00
Homu
e8047050cd Auto merge of #2324 - micbou:documentation-faq-entry-issue, r=puremourning
[READY] Fix FAQ entry in README

Wrong section level for this FAQ entry.

<!-- 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/2324)
<!-- Reviewable:end -->
2016-09-12 00:00:16 +09:00
micbou
333958c5c4
Fix FAQ entry in README 2016-09-11 11:14:14 +02:00
Homu
058c654ca3 Auto merge of #2319 - xai:update-docs, r=micbou
Update instructions for FreeBSD

Newer version of clang and llvm is required now.

<!-- 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/2319)
<!-- Reviewable:end -->
2016-09-11 03:33:56 +09:00
Homu
e03b49e3be Auto merge of #2312 - micbou:on-buffer-visit-changed, r=puremourning
[READY] Do not send BufferVisit and FileReadyToParse notification events when current allowed buffer has not changed

See discussion in PR #2265 and the commit message.

Since only the `BufEnter` autocommand event is concerned, we are splitting `s:OnBufferVisit` in two functions:
 - `s:OnBufferRead`, identical to current `s:OnBufferVisit`, for the `BufRead` and `FileType` autocommand events;
 - `s:OnBufferEnter` for the `BufEnter` event.

We only send the `BufferVisit` and `FileReadyToParse` event notifications to `ycmd` in `s:OnBufferEnter` when the entered buffer, in which we are allowed to complete, is different from the last one.

Closes #2265.

<!-- 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/2312)
<!-- Reviewable:end -->
2016-09-10 22:37:45 +09:00
Homu
12153361d7 Auto merge of #2318 - micbou:update-ycmd, r=vheon
[READY] Update to latest ycmd

See https://github.com/Valloric/ycmd/pull/592#issuecomment-245324170.

<!-- 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/2318)
<!-- Reviewable:end -->
2016-09-09 05:12:30 +09:00
Olaf Lessenich
b53ada758f Update instructions for FreeBSD
Newer version of clang and llvm is required now.
2016-09-08 11:58:52 +02:00
micbou
d3af3302ea
Update to latest ycmd 2016-09-07 17:59:41 +02:00
micbou
aca0f21a3d
Trigger BufferVisit event only when buffer has changed
When selecting candidates during completion, Vim jumps to the preview
window (if enabled) and jumps back to the actual buffer, triggering
twice the BufEnter autocommand event. This results in YCM sending
two BufferVisit and one FileReadyToParse event notifications to
ycmd, which is completely unnecessary since the current buffer
did not change. We improve this by only sending these events when the
entered buffer allowed to be completed has changed.
2016-09-07 11:21:41 +02:00
Homu
ada4ca94cf Auto merge of #2302 - micbou:completions-avoid-hit-enter, r=Valloric
[READY] Avoid hit-enter prompts during completions

Being interrupted by the `Press ENTER or type command to continue` prompt while writing code is annoying. This happens when an error occurs during completion and the error message displayed on the status line is longer than the window width. We prevent that by truncating the message.

Note that the message logged to the command-line history will also be truncated.

4 functions to display messages on the status line (`PostVimMessage`, `PostMultiLineNotice`, `EchoText`, and `EchoTextVimWidth`) is a little too much. Merge them into one.

<!-- 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/2302)
<!-- Reviewable:end -->
2016-09-06 07:15:35 +09:00
Homu
e332cdb2a0 Auto merge of #2307 - micbou:update-ycmd, r=puremourning
[READY] Update to latest ycmd

Include PR https://github.com/Valloric/ycmd/pull/579 which fixes #2293 and probably #2306.

<!-- 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/2307)
<!-- Reviewable:end -->
2016-09-01 07:05:17 +09:00
micbou
c6eaa55ee6 Update to latest ycmd 2016-08-31 20:02:18 +02:00
micbou
391757eec2 Avoid hit-enter prompts during completions
When an error occurs during completions, a message is displayed on
the status line. If this message is longer than the width of the
current window, Vim will prompt the user to press enter or type a
command to hide the message, interrupting user workflow. We prevent
that by truncating the message to window width.
Merge PostMultiLineNotice, EchoText, and EchoTextVimWidth functions
into PostVimMessage.
2016-08-28 09:19:07 +02:00
Homu
d38ffc5446 Auto merge of #2284 - micbou:full-instructions-omnisharp-completer, r=puremourning
[READY] Update C# instructions in full installation guide

Add the `/property:Configuration=Release` option when building the OmniSharp server in the full installation guide.

Fixes #2188.

<!-- 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/2284)
<!-- Reviewable:end -->
2016-08-20 21:00:31 +09:00
Homu
358363972a Auto merge of #2292 - micbou:diagnostic-highlight-end-of-line, r=Valloric
[READY] Fix diagnostic highlighting at line ending

When highlighting a range of characters for a diagnostic, we make sure that the start and end positions do not go paste the line contents or the range will not be highlighted at all (don't ask, this is a Vim feature). However, we don't account for the end position not being included in the diagnostic range. So, when this position ends at line ending or after it, we move it just before the `EOL` character. Since the end position is not part of the range, this character will not be highlighted, which is not what we want. We fix this behavior by decrementing the end column before clamping it and incrementing it after.

Fixes https://github.com/Valloric/YouCompleteMe/issues/846.

<!-- 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/2292)
<!-- Reviewable:end -->
2016-08-20 18:43:22 +09:00
micbou
ef49f3e052 Fix diagnostic highlighting at line ending
When columns are clamped to not be past the contents of the line for
highlighting diagnostics, we need to account for the column end not
being included in the diagnostic range.
2016-08-18 21:21:10 +02:00
Homu
b94fcb2c9e Auto merge of #2290 - micbou:update-ycmd, r=vheon
[READY] Update to latest ycmd

PR #2279 needs to be merged before this one.

<!-- 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/2290)
<!-- Reviewable:end -->
2016-08-19 02:25:11 +09:00
micbou
5cbf76456f Update Omnisharp instructions in documentation
The /property:Configuration=Release option is not mentioned when
building the OmniSharp server in the full installation guide.
2016-08-18 18:29:20 +02:00
micbou
4c040f8de9 Update to latest ycmd 2016-08-18 18:28:47 +02:00
Homu
80ae455852 Auto merge of #2279 - micbou:flake8, r=Valloric
[READY] Disable flake8 for Python 2.6 on Travis

See https://github.com/Valloric/ycmd/pull/570.

<!-- 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/2279)
<!-- Reviewable:end -->
2016-08-19 01:04:43 +09:00
micbou
eace44f7d5 Disable flake8 for Python 2.6 on Travis
Since version 3.0.0, flake8 does not support Python 2.6, 3.2 and 3.3
anymore. It is still working for our Python 3.3 runs on Travis but
not for the Python 2.6 one so we only disable it for this version.
2016-08-12 02:25:16 +02:00
Homu
576bef62e6 Auto merge of #2281 - micbou:documentation-windows-python-bug, r=micbou
[READY] Recommend a more recent version for Python bug on Windows

<!-- 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/2281)
<!-- Reviewable:end -->
2016-08-12 06:32:33 +09:00
Homu
2af3ebbb05 Auto merge of #2282 - micbou:syntax-preproc-group, r=Valloric
[READY] Extract keywords from the whole PreProc syntax group

Fixes #2269.

<!-- 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/2282)
<!-- Reviewable:end -->
2016-08-12 05:06:03 +09:00
micbou
77843d7624 Recommend a more recent version for Python bug 2016-08-11 20:08:10 +02:00
micbou
d3916a8752 Extract keywords from whole PreProc syntax group
Reorder syntax groups to follow documentation order.
2016-08-09 11:59:35 +02:00
Homu
b50984be76 Auto merge of #2274 - micbou:improve-syntax-extraction, r=Valloric
[READY] Improve extraction of keywords from syntax list

This PR is an attempt at improving the extraction of keywords from Vim syntax files. Current approach is to go through the `syntax list` output and:
  - ignore lines where the first word is a reserved keyword for syntax highlighting except for `contained`;
  - ignore all words used by Vim as arguments in the syntax commands;
  - add remaining words to the list of identifiers.

The main issue with this approach is that syntax arguments that could be valid language keywords are always ignored. There is also a bug where the `match` keyword is extracted while not being a language keyword (see the Python, C++, and Java tests).
With the new approach, we try to ignore Vim keywords only when necessary, that is:
  - ignore `syntax match` (fix the `match` keyword bug) and `syntax region` commands: they mostly contain arguments, syntax groups and regular expressions;
  - ignore  `nextgroup=` if in first position and subsequent arguments `skipempty`, `skipwhite`, and `skipnl`;
  - ignore `contained` argument if in first position;
  - add remaining words to the list of identifiers.

This strategy is based on observations of the `syntax list` output.

<!-- 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/2274)
<!-- Reviewable:end -->
2016-08-09 06:22:22 +09:00
micbou
75d41d1137 Improve extraction of syntax keywords
Use the following strategy to extract identifiers from syntax
highlighting:
 - ignore match and region: they mostly contain arguments,
   syntax groups and regular expressions;
 - ignore "nextgroup=" if first word and subsequent arguments
   "skipempty", "skipwhite", and "skipnl";
 - ignore "contained" argument if first word;
 - add remaining words to the list of identifiers.
Fix a bug where the word "match" was extracted while not being a keyword
of the syntax language.
2016-08-06 13:39:06 +02:00
Homu
390d2e1c79 Auto merge of #2273 - micbou:syntax-tests, r=Valloric
[READY] Rewrite syntax tests

While trying to fix a bug when extracting identifiers from Vim syntax files, I found out that errors from syntax tests are not really helpful because `eq_` assertions don't tell which items are missing when comparing lists (or sets). So, we use matchers from hamcrest instead to get useful assertion errors.

Note that with these changes, we don't test anymore if the value returned by `_KeywordsFromSyntaxListOutput` is a set. I don't think it's an issue but if you feel that's important, we can probably check for it too.

<!-- 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/2273)
<!-- Reviewable:end -->
2016-08-06 18:46:31 +09:00
micbou
f14485acb9 Rewrite syntax tests
Use matchers from hamcrest instead of eq_ assertions in syntax tests
to get more detailed assertion errors when tests are failing.
2016-08-06 01:12:59 +02:00
Homu
9968a43f7e Auto merge of #2245 - micbou:shutdown, r=puremourning
[READY] Implement shutdown handler

This PR depends on https://github.com/Valloric/ycmd/pull/282.

We don't want to block Vim exit if the server takes too much time to answer the shutdown request so we use a timeout of 100ms for this request. In my experience, it takes ~5ms.

The `YcmStopServer` command only exists for testing purpose. It will be removed in the final version of this PR.

Fixes #876.

<!-- 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/2245)
<!-- Reviewable:end -->
2016-07-23 22:18:24 +09:00
micbou
4e94d7cad6 Update to latest ycmd 2016-07-23 11:28:47 +02:00
micbou
7b2155ab64 Refactor tests using a server instance
Create a Server_test class for tests that need a server instance.
2016-07-23 11:21:38 +02:00
micbou
630b85ad01 Use shutdown request to stop server
Use shutdown request to stop ycmd server in a portable way.
2016-07-23 11:21:20 +02:00
Homu
c1047bee9a Auto merge of #2242 - micbou:replace-chunk-bytes, r=Valloric
[READY] Fix Python 3 bytes issue in ReplaceChunk function

This PR updates the `ReplaceChunk` tests by using plain strings instead of byte objects to mimic Vim buffers returning byte objects on Python 2 and unicode objects on Python 3.

We are only updating the tests for now to show that these changes make the tests fail on Python 3 with the same error as issue #2240.

Fixes #2240.

<!-- 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/2242)
<!-- Reviewable:end -->
2016-07-17 01:15:41 +09:00
micbou
899746d51c Convert Vim buffers to bytes in ReplaceChunk 2016-07-14 02:39:33 +02:00
micbou
a986b3ed0e Update ReplaceChunk tests
Do not convert strings to bytes but instead use plain strings to mimic
Vim buffers returning a list of byte objects on Python 2 and unicode
objects on Python 3.
2016-07-14 00:46:30 +02:00