Language Server Protocolのclientを書く

今どきのエディタはLanguage Server Protocol( Official page for Language Server Protocol ) を使えるものなようなので、そのクライアントを作ってみようと模索中。

まず、補完(completion)の機能を使えるようになることを目標にやってみる。

最短のステップは、

  1. サーバを起動して、initialize requestを送る
  2. サーバからのレスポンスを待つ
  3. didOpen notificationで開いたファイルを伝える
  4. textDocument/completion requestを送る
  5. サーバからレスポンスを受ける

エディタで編集している場合には、3.と4.の間で、didChange notificationを送らないと、だな。

作ってみて( https://github.com/masahino/mruby-lsp-client )、試してみると、サーバの実装にそれなりに差異があり、 個々に対応が必要になりそうな気配。