Commit Graph

2399 Commits

Author SHA1 Message Date
Andrea Cedraro
fda5c7e6c6 Use bang version of normal
Fixes #2519
2017-01-31 22:09:40 +01:00
Homu
f6867340dd Auto merge of #2517 - micbou:remove-healthy-check, r=Valloric
[READY] Remove healthy check

This PR removes the code that, if the server is not yet healthy, tries in a separate thread to send the same request at different intervals until it gets a response or reaches 5 failed attempts.

Main issue with that code is that it blocks Vim if a synchronous request (`semantic_completion_available`, `run_completer_command`, etc.)  is sent while the server is not up. See issue #2071.

Other issues are that it's hard to understand how this code behaves (it combines threads and retries), it becomes useless once the server is healthy (because `SERVER_HEALTHY` is cached and never reset), it depends on arbitrary parameters (why 5 retries with a delay of 0.5s multiplied by 1.5 at each attempt?), and it has a package dependency `retries`.

Now that we catch all server exceptions (PR #2453) and define a very short connection timeout (PR #2514), we can just drop this code.

This change gives a huge improvement in startup time on Windows (don't worry, more improvements are coming for all platforms). The reason is that `requests` (probably `urllib3`) tries for ~1s to check if the server is healthy on Windows while it's almost instantaneous on other platforms.
<table>
  <tr>
    <th rowspan="2">Platform</th>
    <th colspan="2">First run (ms)</th>
    <th colspan="2">Subsequent runs (ms)</th>
  </tr>
  <tr>
    <td>Before</td>
    <td>After</td>
    <td>Before</td>
    <td>After</td>
  </tr>
  <tr>
    <td>Ubuntu 16.04 64-bit</td>
    <td>228</td>
    <td>248</td>
    <td>176</td>
    <td>151</td>
  </tr>
  <tr>
    <td>macOS 10.12</td>
    <td>433</td>
    <td>417</td>
    <td>263</td>
    <td>263</td>
  </tr>
  <tr>
    <td>Windows 10 64-bit</td>
    <td>1861</td>
    <td>844</td>
    <td>814</td>
    <td>292</td>
  </tr>
</table>

These results were obtained by running the `prof.py` script from [this branch](https://github.com/micbou/YouCompleteMe/tree/profiling-startup). The difference between first run and subsequent runs is Python bytecode generation (`*.pyc` files).

Fixes #2071.

<!-- 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/2517)
<!-- Reviewable:end -->
2017-01-29 08:53:07 +09:00
micbou
10aba99782
Remove healthy check 2017-01-28 16:54:33 +01:00
Homu
410a4b6a82 Auto merge of #2516 - micbou:connection-error, r=Valloric
[READY] Catch ConnectionError instead of ConnectTimeout

On non-Windows platforms (tested on Linux and OS X), a `ConnectionError` exception is raised instead of a `ConnectTimeout` one when the connection cannot be established (e.g. the server crashed). Since [the latter is a subclass of the former](http://docs.python-requests.org/en/master/_modules/requests/exceptions/#ConnectTimeout), we only need to catch `ConnectionError`.

<!-- 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/2516)
<!-- Reviewable:end -->
2017-01-28 18:05:18 +09:00
micbou
6e8aeeac15
Catch ConnectionError instead of ConnectTimeout
On non-Windows platforms, a ConnectionError exception is raised instead
of a ConnectTimeout one when the connection cannot be established (e.g.
the server crashed). Since the latter is a subclass of the former, we
only need to catch ConnectionError.
2017-01-27 03:33:43 +01:00
Homu
dc44597674 Auto merge of #2514 - micbou:connect-timeout, r=Valloric
[READY] Rely on connect timeout instead of checking that the server is alive

Currently, we always check that the ycmd process is up (with the `IsServerAlive` method) before sending a request. Without this check, each request could block Vim until a `NewConnectionError` exception is raised if the server crashed. This is the case on Windows where it takes ~1s before the exception is raised which makes Vim unusable. However, even with this check, Vim may still be blocked in the following cases:
 - the server crashes just after the check but before sending the request;
 - the server is up but unresponsive (e.g. its port is closed).

To avoid both cases, we instead use [the connect timeout parameter from Requests](http://docs.python-requests.org/en/master/user/advanced/?highlight=connect%20timeout#timeouts) and set it to a duration sufficiently short (10 ms) that the blocking can't be noticed by the user. Since the server is supposed to run locally (this is what YCM is designed for), 10ms is largely enough to establish a connection.

The `IsServerAlive` check is removed almost everywhere except in `OnFileReadyToParse` because we still want to notify the user if the server crashed.

This change makes it possible to not have to [wait for the server to be healthy before sending asynchronous requests](https://github.com/Valloric/YouCompleteMe/blob/master/python/ycm/client/base_request.py#L137-L138). This will dramatically improve startup time (see issue #2085) and fixes #2071. Next PR once this one is merged.

<!-- 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/2514)
<!-- Reviewable:end -->
2017-01-26 19:01:59 +09:00
Homu
26bbbb2cb9 Auto merge of #2513 - micbou:get-completions, r=vheon
[READY] Remove s:GetCompletions function

Small refactoring.

<!-- 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/2513)
<!-- Reviewable:end -->
2017-01-26 14:53:48 +09:00
micbou
5ece7aee9b
Remove s:GetCompletions function 2017-01-24 22:46:44 +01:00
micbou
8426191655
Update test 2017-01-24 22:43:41 +01:00
micbou
05256d6719
Define connect timeout
Rely on connect timeout instead of checking if the server is alive.
2017-01-24 22:43:40 +01:00
Homu
60f3db14d5 Auto merge of #2506 - micbou:subservers-logfiles, r=puremourning
[READY] Include subservers logfiles in YcmToggleLogs command

Thanks to PR #2342, we can easily update the `:YcmToggleLogs` command to also list the subservers logfiles and open them directly in Vim. For instance, when editing a Python file:
```
:YcmToggleLogs
Available logfiles are:
jedihttp_55438_stderr_g9rk18nc.log
jedihttp_55438_stdout_duc8kfqm.log
ycm_ttssiu.log
ycmd_55432_stderr_b9lnwf.log
ycmd_55432_stdout_jyakxs.log
```
Then
```
:YcmToggleLogs jedihttp_55438_stderr_g9rk18nc.log
```
to open the JediHTTP stderr logfile in Vim.

<!-- 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/2506)
<!-- Reviewable:end -->
2017-01-21 22:14:06 +09:00
micbou
ab758e4c64
Include subservers logfiles in YcmToggleLogs 2017-01-21 13:42:58 +01:00
Homu
dc05227b02 Auto merge of #2342 - micbou:debug-info, r=Valloric
[READY] Implement new debugging information API

Depends on PR https://github.com/Valloric/ycmd/pull/601.

<!-- 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/2342)

<!-- Reviewable:end -->
2017-01-19 08:21:21 +09:00
micbou
18aba7a582
Implement new debugging information API 2017-01-18 11:13:11 +01:00
Homu
8f63e60b36 Auto merge of #2502 - spectral54:master, r=micbou
Disable sitecustomize when checking python version

# 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:
    - This seems quite difficult to test in a cross-platform, cross-version fashion, but
    - I might have missed something, I am not a python expert. :)
- [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

[Please explain **in detail** why the changes in this PR are needed.]

Sitecustomize files can be slow or broken and might hang editor
startup.  Since they aren't necessary for checking the python version,
disable them to get a small speed boost for everyone, and an editor
that doesn't hang indefinitely on startup if the sitecustomize gets
into an infinite loop (due to a bad NFS mount or similar).

[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/2502)
<!-- Reviewable:end -->
2017-01-14 18:11:39 +09:00
Kyle Lippincott
b5b2fb57e1 Disable sitecustomize when checking python version
Sitecustomize files can be slow or broken and might hang editor
startup.  Since they aren't necessary for checking the python version,
disable them to get a small speed boost for everyone, and an editor
that doesn't hang indefinitely on startup if the sitecustomize gets
into an infinite loop (due to a bad NFS mount or similar).
2017-01-11 12:18:39 -08:00
Homu
d02de4b399 Auto merge of #2495 - puremourning:readme-compilation-database, r=micbou
[READY] Update readme for compilation database 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.
- [X] I have included tests for the changes in my PR. If not, I have included a
  rationale for why I haven't.

> only changes docs

- [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 change:
 - updates the c-family completer documentation to describe the built in support for compilation databases added in https://github.com/Valloric/ycmd/pull/680
 - explains more about why ycmd needs compiler flags, and how to go about providing them
 - recommends using a compilation database (as that seems to be the fashion)
 - standardises formatting for `NOTE` (it was inconsistent before)
 - states that the preferred installation method is `install.py` (rather than the full installation instructions)
 - update the vim doc
 - update the ycmd submodule

### ycmd update release note

- valloric/ycmd#678 - Bump Boost version to 1.63.0
- valloric/ycmd#686 - Update JediHTTP for Python 3.6 support
- valloric/ycmd#684 - Fix JavaScript identifier regex
- valloric/ycmd#680 - Automatically load a compilation database if found

[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/2495)
<!-- Reviewable:end -->
2017-01-09 03:45:08 +09:00
Ben Jackson
3eb8a33ec2 Update vim documentaion 2017-01-08 18:02:35 +00:00
Ben Jackson
19c66a62c6 Update ycmd 2017-01-08 18:02:35 +00:00
Ben Jackson
a8261e986e Update readme for compilation database support 2017-01-08 18:02:35 +00:00
Homu
f34b39d618 Auto merge of #2496 - puremourning:update-issue-template, r=micbou
[READY] Improve issue template - guide the user in completing it

# 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.

> project administration-only change

- [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

The issue template has worked very well and a larger number of reported issues include useful diagnostics. However, this is still far from ubiquitous.

I've noticed two recurring problems, that I've tried to solve with an update to the template:

- when reporting a build failure, not including the _entire_ `install.py` log or the command used to run it
- when reporting issues, stating that something doesn't work, but not stating what the expected behaviour was (this is a common human mistake).

Meanwhile, I've encouraged the reporter to fill in the sections by actually providing such sections in the template for them to fill in.

This is unlikely to get us to 100%, but hopefully another incremental increase in the quality of reports will come out of it.

[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/2496)
<!-- Reviewable:end -->
2017-01-09 02:23:42 +09:00
Ben Jackson
f219113097 Improve issue template - guide the user in completing it 2017-01-08 17:19:42 +00:00
Homu
3fde57b029 Auto merge of #2488 - micbou:extra-conf-requests, r=puremourning
[READY] Handle server exceptions from loading/ignoring extra conf

Since PR #2453, we don't catch anymore exceptions raised from loading or ignoring a `.ycm_extra_conf.py` file. For instance, loading this extra conf:
```python
raise Exception
```
will result in a Python traceback inside Vim. This is fixed by catching the `UnknownExtraConf` exception in its own block (as [it was before](48b7ccef76/python/ycm/client/event_notification.py (L64-L73))).

<!-- 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/2488)
<!-- Reviewable:end -->
2017-01-04 07:30:23 +09:00
micbou
deddca8927
Handle exceptions from loading/ignoring extra conf 2017-01-03 15:29:12 +01:00
Homu
3828cfd2fd Auto merge of #2487 - micbou:large-file, r=puremourning
[READY] Fix large file message appearing twice

In PR #2469, we moved the large file logic inside `s:OnBufferRead` but forgot this function was not only called on the `BufRead` event but also on the `FileType` one. This makes the large file message appears twice when opening such file. We fix that by not displaying the message when the `b:ycm_largefile` variable is already set.

Also, the message is now displayed with `PostVimMessage` to avoid the `Press ENTER or type command to continue` prompt.

Fixes #2485.

<!-- 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/2487)
<!-- Reviewable:end -->
2017-01-01 22:38:55 +09:00
micbou
c67c581d81
Always use dot operator to concatenate strings
Vim automatically adds a space between strings when concatenating them
without the dot operator. This is not obvious so we always use the dot
operator.
Minor coding style changes when writing statements on multiple lines to
be more consistent.
2017-01-01 13:57:03 +01:00
micbou
c394895c4e
Fix large file message appearing twice
Use PostVimMessage to avoid "Press ENTER or type command to continue"
message.
2016-12-31 09:53:12 +01:00
Homu
19a6a55400 Auto merge of #2486 - puremourning:update-ycmd, r=micbou
[READY] Update ycmd

# 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.

> ycmd tests itself

- [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

A number of enhancements have been made in the server. They seem stable in my testing. Let's push them live now.

Includes all of the following PRs:

* Auto merge of valloric/ycmd#631 - vheon:refactor-request-wrap, r=micbou: [READY] Add 'first_filetype' to RequestWrap
* Auto merge of valloric/ycmd#634 - vheon:fix-previous-identifier, r=micbou: [READY] Avoid to wrap around when searching for previous identifier
* Auto merge of valloric/ycmd#635 - micbou:resource-warning, r=Valloric: [READY] Fix warnings when resetting process handle
* Auto merge of valloric/ycmd#637 - vheon:refactor-tags-file, r=micbou: [READY] Extract filtering of tags as a generator
* Auto merge of valloric/ycmd#639 - mixedCase:tern_0.20, r=micbou: Bump Tern to version 0.20
* Auto merge of valloric/ycmd#640 - vheon:test-identifier-completer, r=micbou: [READY] Additional test for the identifier completer
* Auto merge of valloric/ycmd#636 - puremourning:coverage-c++, r=micbou: [READY] Coverage for c++ code
* Auto merge of valloric/ycmd#641 - micbou:remove-tests-folder, r=vheon: [READY] Remove unused tests folderS
* Auto merge of valloric/ycmd#643 - micbou:javascript-identifiers, r=Valloric: [READY] Add regex for JavaScript and TypeScript identifiers
* Auto merge of valloric/ycmd#644 - micbou:flake8, r=Valloric: [READY] Fix flake8 errors
* Auto merge of valloric/ycmd#645 - micbou:global-config-exception, r=Valloric: [READY] Catch exceptions from global extra conf
* Auto merge of valloric/ycmd#649 - micbou:codecov, r=puremourning: [READY] Use codecov bash uploader on Travis
* Auto merge of valloric/ycmd#652 - micbou:remove-executable-mode, r=Valloric: [READY] Remove executable mode
* Auto merge of valloric/ycmd#650 - vheon:remove-unused-assert, r=micbou: Remove unused CustomAssert
* Auto merge of valloric/ycmd#651 - micbou:global-extra-conf-reuse, r=Valloric: [READY] Do not reload extra conf file
* Auto merge of valloric/ycmd#657 - micbou:gocode-submodule, r=Valloric: [READY] Update Gocode submodule (Fixes #2449)
* Auto merge of valloric/ycmd#665 - micbou:flake8, r=micbou: [READY] Do not disable Flake8 on Python 2.6 Travis but restrict its version
* Auto merge of valloric/ycmd#667 - haifengkao:SupportObjcImportModule, r=Valloric: Support objc import module
* Auto merge of valloric/ycmd#677 - puremourning:dev-flags, r=micbou: [READY] Enable dev flags when --enable-debug is supplied

[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/2486)
<!-- Reviewable:end -->
2016-12-30 02:56:02 +09:00
Ben Jackson
49f13e6bfe Update ycmd 2016-12-29 16:02:58 +00:00
Homu
8161d35030 Auto merge of #2465 - micbou:response-future, r=Valloric
[READY] Fix exception when response future is not set

An `AttributeError` exception is raised when `Done` is called before `Start` in the `CompletionRequest` and `EventNotification` classes because the `_response_future` attribute is not yet defined.

Fixes #2461.

<!-- 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/2465)
<!-- Reviewable:end -->
2016-12-23 09:41:21 +09:00
Homu
e1e7e648d4 Auto merge of #2453 - micbou:handle-server-exception, r=puremourning
[READY] Catch and log all server exceptions

A lot of different errors may occur when sending a request to ycmd and receiving its response:
 - [any exception from the requests module](http://docs.python-requests.org/en/master/_modules/requests/exceptions/);
 - exceptions from ycmd: `ServerError` and `UnknownExtraConf`;
 - `RuntimeError` exception from invalid HMAC;
 - and possibly others.

Thanks to PR #2430, we can now catch and log these exceptions.

I am marking this PR as WIP because I'd like to add tests but I am not sure on how to implement them. Should we use actual code for these tests or mock the response from the ycmd server?

Fixes #2216.
Fixes #2272.

<!-- 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/2453)
<!-- Reviewable:end -->
2016-12-23 09:20:22 +09:00
Homu
194ff33466 Auto merge of #2476 - micbou:flake8, r=Valloric
[READY] Do not disable Flake8 on Python 2.6 Travis but restrict its version

See PR https://github.com/Valloric/ycmd/pull/665.

<!-- 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/2476)
<!-- Reviewable:end -->
2016-12-19 03:20:28 +09:00
micbou
3033203ca5
Add Flake8 requirement for Python 2.6 and 3.3 2016-12-18 16:31:29 +01:00
micbou
85922ba1a9
Revert PR #2279 2016-12-18 16:31:23 +01:00
Greg Hurrell
1e3b7bae51 Don't use VimEnter initialization except when stating gui
This is another attempt at:

https://github.com/Valloric/YouCompleteMe/pull/2473

Which removed the apparently flawed attempt at "lazy" loading of YCM.
While it fails to get the load out of the critical startup path, it
*does* serve the useful purpose when starting up gvim of avoiding a
deadlock situation in gvim.

So, this time, we keep VimEnter, but only for the gui-starting case. We
update the comment to explain what is actually happening. And we can
keep the docs about how to defer loading.
2016-12-16 19:21:09 -08:00
Homu
86ccd88980 Auto merge of #2469 - micbou:remove-bufreadpre-autocommand, r=micbou
[READY] Do not use BufReadPre autocommand

This autocommand has a bug that makes the cursor goes to the first line of the current buffer when opening the preview window with `:pedit`. Since the `BufRead` autocommand is always called after, we can drop it by moving the `s:OnBufferReadPre` logic into the `s:OnBufferRead` function.

Fixes #2466.

<!-- 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/2469)
<!-- Reviewable:end -->
2016-12-16 22:54:19 +09:00
Val Markovic
caa4291a9a
Revert "Auto merge of #2473 - wincent:no-lazy, r=Valloric"
This reverts commit c182c0529b, reversing
changes made to 48b7ccef76.
2016-12-15 21:21:35 -08:00
Homu
c182c0529b Auto merge of #2473 - wincent:no-lazy, r=Valloric
No lazy

# PR Prelude

- [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

See prior version of this PR (https://github.com/Valloric/YouCompleteMe/pull/2454) for more discussion.

[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/2473)
<!-- Reviewable:end -->
2016-12-15 19:37:49 +09:00
Greg Hurrell
7f76b03e0e doc: Add FAQ entry explaining how to defer loading 2016-12-13 23:51:40 -08:00
Greg Hurrell
c22e425e25 Remove non-lazy lazy loading code
As discussed in https://github.com/Valloric/YouCompleteMe/pull/2454,
this code doesn't do what it claims to do on the surface, so we should
delete it.

I'll follow up with a commit to explain in the README how to actually
defer loading of the plug-in.
2016-12-13 23:43:39 -08:00
micbou
1511ee542f
Do not use BufReadPre autocommand
This autocommand has a bug that causes the cursor to move to the first
line of the current buffer when using the pedit command.
2016-12-12 21:16:06 +01:00
micbou
85d5844873
Add docstring to HandleServerException
Wrap request with HandleServerException in YcmdKeepalive class.
2016-12-12 02:53:57 +01:00
micbou
01aa54ee2d
Add tests 2016-12-12 02:36:15 +01:00
micbou
fd41d52dfe
Catch and log all server exceptions 2016-12-12 02:36:15 +01:00
micbou
bd890428a4
Fix exception when response future is not set 2016-12-11 20:51:45 +01:00
Homu
48b7ccef76 Auto merge of #2456 - micbou:remove-outdated-syntastic-option, r=Valloric
[READY] Remove outdated Syntastic option

The `ycm_register_as_syntastic_checker` option was introduced a long time ago in commit 16b6f877c6 and became obsolete when [Syntastic support was replaced](6c01881e1a). Since then, it doesn't serve any purpose except being an alias to the `ycm_show_diagnostics_ui` option which can be an issue (see #2455) so we remove it.

Fixes #2455.

<!-- 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/2456)
<!-- Reviewable:end -->
2016-12-02 08:56:36 +09:00
micbou
b26d395ed1
Remove outdated Syntastic option 2016-12-01 18:13:02 +01:00
Homu
39be8b1aad Auto merge of #2430 - micbou:client-logfile, r=Valloric
[READY] Add client logfile

We have a lot of issue reports with Python exceptions that interrupt user workflow or even worse make the editor unusable and force users to restart it (e.g. issue https://github.com/Valloric/YouCompleteMe/issues/2192). We really want to avoid that but at the same time we can't just silence these exceptions because they are useful to debug the issue. Logging them to Vim `:messages` is not practical because we can't write to it without displaying messages in the status line which, in addition to distract users, may lead to various issues like the infamous `Press ENTER or type command to continue` message. This is why a logfile is needed.

For now, only server crashes are logged but more logging will be added: connection issues with the server (`ConnectTimeout`, `ReadTimeout`, etc. exceptions), UltiSnips unavailability, requests sent to the server, etc.

The behavior of the `:YcmToggleLogs` command is changed to accept multiple arguments where each argument is a logfile name. Each of these files is opened in a separate window or closed if already open. When no argument is given, the list of available logfiles is displayed to the user. Example:
```
Available logfiles are:
ycm_pz83u7.log
ycmd_23830_stderr_gf6j3i.log
ycmd_23830_stdout_gmpa_k.log
```

With this change and PR #2342, we will add the completers logfiles to the list of files that can be opened with the `:YcmToggleLogs` command.

A bunch of tests are added that cover almost all changes introduced by this PR.

<!-- 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/2430)
<!-- Reviewable:end -->
2016-11-28 00:30:18 +09:00
Homu
8c39a0d5c5 Auto merge of #2445 - micbou:documentation-clang-3.9, r=puremourning
[READY] Bump Clang version in documentation

Since PR https://github.com/Valloric/ycmd/pull/590, Clang 3.9 is required because of the `KeepGoing` option. In fact, it is still possible to successfully compile against a 3.8 system libclang or with the `-DEXTERNAL_LIBCLANG_PATH` flag pointing to a 3.8 libclang since [the headers included in ycmd](https://github.com/Valloric/ycmd/tree/master/cpp/llvm/include/clang-c) are used in these two cases. However, the `KeepGoing` option will have no effect. So, we still recommend Clang 3.9 in all cases.

Closes https://github.com/Valloric/ycmd/issues/654.

<!-- 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/2445)
<!-- Reviewable:end -->
2016-11-22 18:19:09 +09:00
micbou
e179e860b4
Bump Clang version in documentation 2016-11-22 02:13:09 +01:00