|
@@ -114,9 +114,29 @@ YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for
|
|
|
- and an omnifunc-based completer that uses data from Vim's omnicomplete system
|
|
|
to provide semantic completions for many other languages (Ruby, PHP etc.).
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
-Here's an explanation of what happens in the short GIF demo above.
|
|
|
+Here we can see YCM being able to do a few things:
|
|
|
+
|
|
|
+- Retrieve references across files
|
|
|
+- Go to declaration/definition
|
|
|
+- Expand `auto` in C++
|
|
|
+- Fix some common errors with `FixIt`
|
|
|
+- Not shown in the gif is `GoToImplementation` and `GoToType`
|
|
|
+ for servers that support it.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+YCM might be the only vim completion engine with the correct unicode support.
|
|
|
+ Though we do assume UTF-8 everywhere.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+If a server provides "signature help" support, YCM is able to leverage that.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+Here's an explanation of what happens in the last GIF demo above.
|
|
|
|
|
|
First, realize that **no keyboard shortcuts had to be pressed** to get the list
|
|
|
of completion candidates at any point in the demo. The user just types and the
|
|
@@ -201,17 +221,25 @@ Installation
|
|
|
|
|
|
- Install cmake, macvim and python; Note that the *system* vim is not supported.
|
|
|
|
|
|
+
|
|
|
+
|
|
|
brew install cmake macvim python
|
|
|
|
|
|
- Install mono, go, node and npm
|
|
|
|
|
|
+
|
|
|
+
|
|
|
brew install mono go nodejs
|
|
|
|
|
|
- Compile YCM
|
|
|
|
|
|
+
|
|
|
+
|
|
|
cd ~/.vim/bundle/YouCompleteMe
|
|
|
python3 install.py --all
|
|
|
|
|
|
+- For plugging an arbitrary LSP server, check [the relevant section](#plugging-an-arbitrary-lsp-server)
|
|
|
+
|
|
|
#### Explanation for the quick start
|
|
|
|
|
|
These instructions (using `install.py`) are the quickest way to install
|
|
@@ -284,14 +312,20 @@ that are conservatively turned off by default that you may want to turn on.
|
|
|
|
|
|
- Install cmake, vim and python
|
|
|
|
|
|
+
|
|
|
+
|
|
|
apt install build-essential cmake vim python3-dev
|
|
|
|
|
|
- Install mono-complete, go, node and npm
|
|
|
- Compile YCM
|
|
|
|
|
|
+
|
|
|
+
|
|
|
cd ~/.vim/bundle/YouCompleteMe
|
|
|
python3 install.py --all
|
|
|
|
|
|
+- For plugging an arbitrary LSP server, check [the relevant section](#plugging-an-arbitrary-lsp-server)
|
|
|
+
|
|
|
#### Explanation for the quick start
|
|
|
|
|
|
These instructions (using `install.py`) are the quickest way to install
|
|
@@ -317,14 +351,20 @@ Install development tools, CMake, and Python headers:
|
|
|
|
|
|
- Fedora 27 and later:
|
|
|
|
|
|
+
|
|
|
+
|
|
|
sudo dnf install cmake gcc-c++ make python3-devel
|
|
|
|
|
|
- Ubuntu 14.04:
|
|
|
|
|
|
+
|
|
|
+
|
|
|
sudo apt install build-essential cmake3 python3-dev
|
|
|
|
|
|
- Ubuntu 16.04 and later:
|
|
|
|
|
|
+
|
|
|
+
|
|
|
sudo apt install build-essential cmake python3-dev
|
|
|
|
|
|
Compiling YCM **with** semantic support for C-family languages through
|
|
@@ -376,10 +416,13 @@ that are conservatively turned off by default that you may want to turn on.
|
|
|
- Install go, node and npm
|
|
|
- Compile YCM
|
|
|
|
|
|
+
|
|
|
+
|
|
|
cd YouCompleteMe
|
|
|
python3 install.py --all
|
|
|
|
|
|
- Add `set encoding=utf-8` to your [vimrc][]
|
|
|
+- For plugging an arbitrary LSP server, check [the relevant section](#plugging-an-arbitrary-lsp-server)
|
|
|
|
|
|
#### Explanation for the quick start
|
|
|
|
|
@@ -482,14 +525,20 @@ that are conservatively turned off by default that you may want to turn on.
|
|
|
|
|
|
- Install cmake
|
|
|
|
|
|
+
|
|
|
+
|
|
|
pkg install cmake
|
|
|
|
|
|
- Install xbuild, go, node and npm
|
|
|
- Compile YCM
|
|
|
|
|
|
+
|
|
|
+
|
|
|
cd ~/.vim/bundle/YouCompleteMe
|
|
|
python3 install.py --all
|
|
|
|
|
|
+- For plugging an arbitrary LSP server, check [the relevant section](#plugging-an-arbitrary-lsp-server)
|
|
|
+
|
|
|
#### Explanation for the quick start
|
|
|
|
|
|
These instructions (using `install.py`) are the quickest way to install
|
|
@@ -1333,6 +1382,22 @@ will be used as the `kwargs[ 'language' ]`.
|
|
|
See [the LSP Examples](https://github.com/ycm-core/lsp-examples) project for more
|
|
|
examples of configuring the likes of PHP, Ruby, Kotlin, and D.
|
|
|
|
|
|
+#### LSP Configuration
|
|
|
+
|
|
|
+Many LSP servers allow some level of user configuration. YCM enables this with
|
|
|
+the help of `.ycm_extra_conf.py` files. Here's an example of jdt.ls user
|
|
|
+configuration.
|
|
|
+
|
|
|
+```python
|
|
|
+def Settings( **kwargs ):
|
|
|
+ if kwargs[ 'language' ] == 'java':
|
|
|
+ return { 'ls': { 'java.format.onType.enabled': True } }
|
|
|
+```
|
|
|
+
|
|
|
+The `ls` key tells YCM that the dictionary should be passed to thet LSP server.
|
|
|
+For each of the LSP server's configuration you should look up the respective
|
|
|
+server's documentation.
|
|
|
+
|
|
|
#### Using `omnifunc` for semantic completion
|
|
|
|
|
|
YCM will use your `omnifunc` (see `:h omnifunc` in Vim) as a source for semantic
|
|
@@ -1351,22 +1416,6 @@ vimrc. This will make YCM and Eclim play nice; YCM will use Eclim's omnifuncs as
|
|
|
the data source for semantic completions and provide the auto-triggering and
|
|
|
subsequence-based matching (and other YCM features) on top of it.
|
|
|
|
|
|
-### LSP Configuration
|
|
|
-
|
|
|
-Many LSP servers allow some level of user configuration. YCM enables this with
|
|
|
-the help of `.ycm_extra_conf.py` files. Here's an example of jdt.ls user
|
|
|
-configuration.
|
|
|
-
|
|
|
-```python
|
|
|
-def Settings( **kwargs ):
|
|
|
- if kwargs[ 'language' ] == 'java':
|
|
|
- return { 'ls': { 'java.format.onType.enabled': True } }
|
|
|
-```
|
|
|
-
|
|
|
-The `ls` key tells YCM that the dictionary should be passed to thet LSP server.
|
|
|
-For each of the LSP server's configuration you should look up the respective
|
|
|
-server's documentation.
|
|
|
-
|
|
|
### Writing New Semantic Completers
|
|
|
|
|
|
You have two options here: writing an `omnifunc` for Vim's omnicomplete system
|