1 import * as vscode from 'vscode';
2 import { Position, TextDocumentIdentifier } from 'vscode-languageclient';
3 import { Server } from '../server';
5 interface ExpandedMacro {
10 function code_format(expanded: ExpandedMacro): vscode.MarkdownString {
11 const markdown = new vscode.MarkdownString(
12 `#### Recursive expansion of ${expanded.name}! macro`
14 markdown.appendCodeblock(expanded.expansion, 'rust');
18 export class ExpandMacroHoverProvider implements vscode.HoverProvider {
20 document: vscode.TextDocument,
21 position: vscode.Position,
22 token: vscode.CancellationToken
23 ): Thenable<vscode.Hover | null> | null {
24 async function handle() {
25 const request: MacroExpandParams = {
26 textDocument: { uri: document.uri.toString() },
29 const result = await Server.client.sendRequest<ExpandedMacro>(
30 'rust-analyzer/expandMacro',
34 const formated = code_format(result);
35 return new vscode.Hover(formated);
45 interface MacroExpandParams {
46 textDocument: TextDocumentIdentifier;