Skip to content

Commit f83d8e3

Browse files
committed
Convert HTML documentation from vscode to LSP format
1 parent 0a028b0 commit f83d8e3

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

src/razor/src/completion/completionHandler.ts

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { SerializableDelegatedCompletionParams } from './serializableDelegatedCo
2020
import { SerializableDelegatedCompletionItemResolveParams } from './serializableDelegatedCompletionItemResolveParams';
2121
import { LanguageKind } from '../rpc/languageKind';
2222
import { UriConverter } from '../../../lsptoolshost/uriConverter';
23+
import { MarkupContent } from 'vscode-html-languageservice';
2324

2425
export class CompletionHandler {
2526
private static readonly completionEndpoint = 'razor/completion';
@@ -116,6 +117,7 @@ export class CompletionHandler {
116117
? CompletionTriggerKind.Invoked
117118
: delegatedCompletionParams.context.triggerKind;
118119

120+
// Roslyn/C# completion
119121
if (delegatedCompletionParams.projectedKind === LanguageKind.CSharp) {
120122
const params: CompletionParams = {
121123
context: {
@@ -132,11 +134,14 @@ export class CompletionHandler {
132134
provideCompletionsCommand,
133135
params
134136
);
135-
this.AdjustRoslynCompletionList(roslynCompletions, delegatedCompletionParams.context.triggerCharacter);
137+
CompletionHandler.AdjustRoslynCompletionList(
138+
roslynCompletions,
139+
delegatedCompletionParams.context.triggerCharacter
140+
);
136141
return roslynCompletions;
137142
}
138143

139-
// HTML case
144+
// HTML completion
140145
const completions = await vscode.commands.executeCommand<vscode.CompletionList | vscode.CompletionItem[]>(
141146
'vscode.executeCompletionItemProvider',
142147
UriConverter.deserialize(virtualDocumentUri),
@@ -158,6 +163,7 @@ export class CompletionHandler {
158163
label: completionItem.label,
159164
kind: completionItem.kind,
160165
commitCharacters: completionItem.commitCharacters,
166+
documentation: CompletionHandler.ToMarkupContent(completionItem.documentation),
161167
};
162168
convertedCompletionItems[i] = convertedCompletionItem;
163169
}
@@ -200,7 +206,7 @@ export class CompletionHandler {
200206
return CompletionHandler.emptyCompletionItem;
201207
}
202208

203-
private AdjustRoslynCompletionList(completionList: CompletionList, triggerCharacter: string | undefined) {
209+
private static AdjustRoslynCompletionList(completionList: CompletionList, triggerCharacter: string | undefined) {
204210
const data = completionList.itemDefaults?.data;
205211
for (const completionItem of completionList.items) {
206212
// textEdit is deprecated in favor of .range. Clear out its value to avoid any unexpected behavior.
@@ -226,4 +232,18 @@ export class CompletionHandler {
226232
}
227233
}
228234
}
235+
236+
// converts completion item documentation from vscode format to LSP format
237+
private static ToMarkupContent(documentation?: string | vscode.MarkdownString): string | MarkupContent | undefined {
238+
const markdownString = documentation as vscode.MarkdownString;
239+
if (!markdownString?.value) {
240+
return <string | undefined>documentation;
241+
}
242+
const markupContent: MarkupContent = {
243+
value: markdownString.value,
244+
kind: 'markdown',
245+
};
246+
247+
return markupContent;
248+
}
229249
}

0 commit comments

Comments
 (0)