- Notifications
You must be signed in to change notification settings - Fork28
roxma/vim-hug-neovim-rpc
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This is anexperimental project, trying to build a compatibility layer forneovim rpc client working on vim8.I started this project because I want to fix thevim8support issue fornvim-completion-manager.
Since this is a general purpose module, other plugins needing rpc support maybenefit from this project. However, there're many neovim rpc methods I haven'timplemented yet, which make this an experimental plugin.Please fork andopen a PR if you get any idea on improving it.
Tip: for porting neovim rplugin to vim8, you might needroxma/nvim-yarp
- vim8
- If
has('pythonx')andset pyxversion=3- same requirements as
4. has('python3')
- same requirements as
- Else if
has('pythonx')andset pyxversion=2- same requirements as
5. has('python')
- same requirements as
- Else if
has('python3')- pynvim
- Pynvim is normally installed by
:py3 import pip; pip.main(['install', '--user', 'pynvim'])orpython3 -m pip install pynvim.If you are a win32 user, be careful that your python install and yourvim install should both the same architecture (both 64bit or both 32). - There should be no error for at least one of
:python3 import pynvimand:python3 import neovim
- Else if
has('python')- pynvim
- Pynvim is normally installed by
:py import pip; pip.main(['install', '--user', 'pynvim'])orpython2 -m pip install pynvim. - There should be no error for at least one of
:python3 import pynvimand:python3 import neovim
set encoding=utf-8in your vimrc.
Use:echo neovim_rpc#serveraddr() to test the installation. It should printsomething like127.0.0.1:51359 or/tmp/vmrUX9X/2.
| Function | Similar to neovim's |
|---|---|
neovim_rpc#serveraddr() | v:servername |
neovim_rpc#jobstart(cmd,...) | jobstart({cmd}[, {opts}]) |
neovim_rpc#jobstop(jobid) | jobstop({job}) |
neovim_rpc#rpcnotify(channel,event,...) | rpcnotify({channel}, {event}[, {args}...]) |
neovim_rpc#rpcrequest(channel, event, ...) | rpcrequest({channel}, {method}[, {args}...]) |
Note thatneovim_rpc#jobstart only support these options:
on_stdouton_stderron_exitdetach
- Cannot pass
Funcrefobject to python client. Pass function name instead. - Python
Nonewill be converted to''instead ofv:nullinto vimscript.Seevim#2246 - The following neovim-only API will be ignored quietly:
nvim_buf_add_highlightnvim_buf_clear_highlight
"vim-hug-neovim-rpc - Sequence Diagram"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^┌───┐ ┌──────────┐ ┌───────────┐ ┌──────┐│VIM│ │VIM Server│ │NVIM Server│ │Client│└─┬─┘ └────┬─────┘ └─────┬─────┘ └──┬───┘ │ Launch thread │ │ │ │───────────────────> │ │ │ │ │ │ │ Launch thread │ │ │─────────────────────────────────────────────────>│ │ │ │ │ │ │ `ch_open` connect │ │ │ │───────────────────> │ │ │ │ │ │ │ │────┐ │ │ │ │ │ Launch VimHandler thread│ │ │ │<───┘ │ │ │ │ │ │ │ │ │ Connect │ │ │ │<───────────────────────────── │ │ │ │ │ │ ────┐ │ │ │ Launch NvimHandler thread │ │ <───┘ │ │ │ │ │ │ │ Request (msgpack rpc) │ │ │ │<───────────────────────────── │ │ │ │ │ │ ────┐ │ │ │ │ Request enqueue │ │ │ <───┘ │ │ │ │ │ │ │ notify (method call) │ │ │ │ <────────────────────────────│ │ │ │ │ │ │ notify (json rpc) │ │ │ │<─────────────────── │ │ │ │ │ │ ────┐ │ │ │ Request dequeue │ │ <───┘ │ │ │ │ │ │ ────┐ │ │ │ │ Process │ │ │ <───┘ │ │ │ │ │ │ │ │ │ Send response (msgpack rpc) │ │────────────────────────────────────────────────────────────────────────────────>┌─┴─┐ ┌────┴─────┐ ┌─────┴─────┐ ┌──┴───┐│VIM│ │VIM Server│ │NVIM Server│ │Client│└───┘ └──────────┘ └───────────┘ └──────┘Add logging settigns to your vimrc. Log files will be generated with prefix/tmp/nvim_log. An alternative is to export environment variables beforestarting vim/nvim.
let$NVIM_PYTHON_LOG_FILE="/tmp/nvim_log"let$NVIM_PYTHON_LOG_LEVEL="DEBUG"
About
EXPERIMENTAL
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
