Chapter 15

Hover(型表示)

takl
takl
2020.12.22に更新

AST に型がついたので hover で型を表示したくなります。というわけで表示しましょう。

例によって capabilities 「hoverが使えるよ」という情報を追加します。

oreore.js
requestTable["initialize"] = (msg) => {
    const capabilities = {
        textDocumentSync: 1,
        definitionProvider: true,
        hoverProvider: true, // <---- ここ
        completionProvider: {}
    };
    :
    :

すると textDocument/hover というメッセージが飛んでくるようになるので、 reponse を返せば良いです。

requestTable["textDocument/hover"] = (msg) => {
    const uri = msg.params.textDocument.uri;
    const position = msg.params.position;
    const ast = findAstOfPosition(uri, position);
    if (!ast || !"type" in ast) {
        sendMessage({ jsonrpc: "2.0", id: msg.id, result: null });
    } else {
        sendMessage({ jsonrpc: "2.0", id: msg.id, result: { contents: typeToString(ast.type) } });
    }
}

* ここまでのソースコード *