
YouCompleteMe as a Server - syncontrol
http://val.markovic.io/articles/youcompleteme-as-a-server
======
Game_Ender
As an emacs C++ user YouCompleteMe is the only VIM plugin that makes me
jealous. I want the code navigation and completion you get with VS or XCode
but within emacs. I know there are other plugins that try to do this, but as
the author mentioned, all the repeated works leads to an overall mediocre
results in most cases.

Maybe the front end of something like irony-mode [0] can be adapted to use the
YouCompleteMe backend.

[0] - [https://github.com/Sarcasm/irony-
mode](https://github.com/Sarcasm/irony-mode)

~~~
syncontrol
Author of YCM here; supporting emacs is one of the big reasons why ycmd is now
vim-agnostic and targeting other editors. I don't use emacs and never have,
but plenty of people I respect do and they all say they'd love to see
something like YCM for their editor of choice.

Problem is, I know _nothing_ of emacs scripting and have even less time to
maintain Yet Another open-source project. So if I end up being the person who
writes such a client, it will be shitty.

I'm really hoping someone from the emacs community takes the lead on building
a ycmd client. I'd provide any and all support they'd need.

------
vdm
This is comparable in scope to Microsoft's Project Roslyn (compiler as a
service).

------
syncontrol
Author of YCM/ycmd here; I'd be happy to answer any questions you might have!

~~~
Game_Ender
Is there a specific API document for ycmd? I tried looking through the code
base and did not see anything explicit. For emacs support the implementation
will have to be in elisp, so having a python independent way of describing the
API would be helpful.

~~~
syncontrol
I'm still in the process of writing API docs[1], but I did write a pretty
thorough example client[2] that demonstrates how to talk to ycmd. It echos out
all the chatter between the client and server and even pretty-prints and
syntax-highlights the requests and responses. It should be pretty easy to
understand how things work.

[1]:
[https://github.com/Valloric/ycmd/blob/master/README.md](https://github.com/Valloric/ycmd/blob/master/README.md)

[2]:
[https://github.com/Valloric/ycmd/blob/master/examples/exampl...](https://github.com/Valloric/ycmd/blob/master/examples/example_client.py)

