LSP(Language Server Protocol)のsignatureHelpと閉括弧の自動補完
LSP(Language Server Protocol)にsignatureHelpというのがありまして、メソッドの引数情報なんかを表示するのなんかに使えそうなもの。
rubyのLSPサーバであるsolargraph(バージョン0.39.8)を使ってみたら、 例えば、
puts(
と"("が入力された段階で、サーバにリクエスト出しても返ってこない。
puts()
となっているとこで"("の位置を指定して、リクエストすると、
{ "signatures"=>[ { "label"=>"puts(*args)", "documentation"=>"Invoke method +puts+ on STDOUT and passing +_args_+\n\nISO 15.3.1.2.11\n\n\n\nVisibility: public" }, { "label"=>"puts(obj, ...)", "documentation"=>"Returns:\n* [nil] \n\nVisibility: public" }, { "label"=>"puts(*)", "documentation"=>"Equivalent to\n\n $stdout.puts(obj, ...)\n\n\n\nReturns:\n* [nil] \n\nVisibility: public" }, {"label"=>"puts(*args)", "documentation"=>"Visibility: public" }] }
という応答が返ってきた。素晴しい。
これって、文法エラーになるような不完全な状況だとsignatureHelpが使えないということでは? 入力途中に使えないと意味ないじゃん、と思って、Visual Stdio Codeでも試してみたら、 なんのことは無い、デフォルトで閉括弧が勝手に入力されるので、何の問題もない。
ふむ。 まずは、閉括弧の自動補完機能を作ってみるか・・・