- 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. - 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.
Stars
Watchers
Forks
Releases
Packages0
Contributors11
Uh oh!
There was an error while loading.Please reload this page.
