Skip to content

Commit 5cbdbc0

Browse files
authored
(fix) markdown in completion resolve (#415)
#403
1 parent 1695e38 commit 5cbdbc0

File tree

2 files changed

+24
-13
lines changed

2 files changed

+24
-13
lines changed

packages/language-server/src/plugins/typescript/features/CompletionProvider.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import {
77
Range,
88
TextDocumentIdentifier,
99
TextEdit,
10+
MarkupContent,
11+
MarkupKind,
1012
} from 'vscode-languageserver';
1113
import {
1214
Document,
@@ -231,8 +233,8 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
231233
detail = `Auto import from ${importPath}\n${detail}`;
232234
}
233235

234-
const documentation = tsDocumentation
235-
? ts.displayPartsToString(tsDocumentation)
236+
const documentation: MarkupContent | undefined = tsDocumentation
237+
? { value: ts.displayPartsToString(tsDocumentation), kind: MarkupKind.Markdown }
236238
: undefined;
237239

238240
return {

packages/language-server/test/plugins/typescript/features/CompletionProvider.test.ts

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@ import {
1111
Position,
1212
Range,
1313
CompletionTriggerKind,
14+
MarkupKind,
1415
} from 'vscode-languageserver';
15-
import { CompletionsProviderImpl, CompletionEntryWithIdentifer } from '../../../../src/plugins/typescript/features/CompletionProvider';
16+
import {
17+
CompletionsProviderImpl,
18+
CompletionEntryWithIdentifer,
19+
} from '../../../../src/plugins/typescript/features/CompletionProvider';
1620
import { LSAndTSDocResolver } from '../../../../src/plugins/typescript/LSAndTSDocResolver';
1721
import { sortBy } from 'lodash';
1822

@@ -114,7 +118,7 @@ describe('CompletionProviderImpl', () => {
114118
replacementSpan: undefined,
115119
sortText: '0',
116120
source: undefined,
117-
uri: fileNameToAbosoluteUri(filename)
121+
uri: fileNameToAbosoluteUri(filename),
118122
} as CompletionEntryWithIdentifer);
119123
});
120124

@@ -135,7 +139,7 @@ describe('CompletionProviderImpl', () => {
135139
});
136140

137141
assert.deepStrictEqual(detail, '(alias) function foo(): boolean\nimport foo');
138-
assert.deepStrictEqual(documentation, 'bars');
142+
assert.deepStrictEqual(documentation, { value: 'bars', kind: MarkupKind.Markdown });
139143
});
140144

141145
it('provides import completions for directory', async () => {
@@ -179,15 +183,17 @@ describe('CompletionProviderImpl', () => {
179183
ts.Extension.Jsx,
180184
ts.Extension.Tsx,
181185
ts.Extension.Json,
182-
'.svelte'
186+
'.svelte',
183187
];
184188
const ignores = ['tsconfig.json', sourceFile];
185189

186190
const testfiles = readdirSync(testFilesDir, { withFileTypes: true })
187-
.filter((f) => f.isDirectory()
188-
|| (supportedExtensions.includes(extname(f.name))
189-
&& !ignores.includes(f.name)))
190-
.map(f => f.name);
191+
.filter(
192+
(f) =>
193+
f.isDirectory() ||
194+
(supportedExtensions.includes(extname(f.name)) && !ignores.includes(f.name)),
195+
)
196+
.map((f) => f.name);
191197

192198
const completions = await completionProvider.getCompletions(
193199
document,
@@ -199,8 +205,11 @@ describe('CompletionProviderImpl', () => {
199205
);
200206

201207
assert.deepStrictEqual(
202-
sortBy(completions?.items.map(item => item.label), x => x),
203-
sortBy(testfiles, x => x)
208+
sortBy(
209+
completions?.items.map((item) => item.label),
210+
(x) => x,
211+
),
212+
sortBy(testfiles, (x) => x),
204213
);
205214
});
206215

@@ -375,7 +384,7 @@ describe('CompletionProviderImpl', () => {
375384
harmonizeNewLines(additionalTextEdits![0]?.newText),
376385
// " instead of ' because VSCode uses " by default when there are no other imports indicating otherwise
377386
`<script>${newLine}import ImportedFile from "./imported-file.svelte";` +
378-
`${newLine}${newLine}</script>${newLine}`,
387+
`${newLine}${newLine}</script>${newLine}`,
379388
);
380389

381390
assert.deepEqual(

0 commit comments

Comments
 (0)