LoginSignup
4
5

More than 5 years have passed since last update.

neovim as a msgpack-RPC client

Posted at

neovimの新しいpluginアーキテクチャはmsgpack-RPCでpluginと通信します。
この通信は相互なのでneovim自体がmsgpack-RPCの機能を備えています。
関係する関数は以下の4つ:

  • rpcnotify
  • rpcstart
  • rpcrequest
  • rpcstop

今回はrpcstart,rpcrequestについて見ていく。

rpcstart({prog}, [, {argv}])はプロセスを起動してその標準入出力経由でmsgpack-RPCの通信を実行します。
通常msgpack-RPCのサーバーはアドレスとポートを指定する事が多いと思いますが、neovimはプロセスとの通信しかサポートして無いように見えます。
ですがnetcatを使用してTCPを標準入出力に変換してしまえば解決です!

試してみましょう。
まずneovimでlocalhostの6666をlistenします:

NVIM_LISTEN_ADDRESS=127.0.0.1:6666 nvim

(neovimは標準ではUNIXドメインソケットつかいます)
これを見るために別のneovimを起動して

let c = rpcstart('nc', ['localhost', 6666])
let res = c.call("vim_get_api_info()")

とするとアクセスできます!やったね!!

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5