Skip to content

Commit 9828689

Browse files
committed
fix(jsx-emmet): speedup emmet suggestions after first keystroke
1 parent 9252361 commit 9828689

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/emmet.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export const registerEmmet = async () => {
1515

1616
const emmet = await import('@vscode/emmet-helper')
1717
const reactLangs = ['javascriptreact', 'typescriptreact']
18+
let lastStartOffset: number | undefined
1819
vscode.languages.registerCompletionItemProvider(
1920
reactLangs,
2021
{
@@ -23,10 +24,18 @@ export const registerEmmet = async () => {
2324
const emmetConfig = vscode.workspace.getConfiguration('emmet')
2425
if (isEmmetEnabled && !emmetConfig.excludeLanguages.includes(document.languageId)) return
2526

26-
const result = await sendCommand<EmmetResult>('emmet-completions', { document, position })
27-
if (!result) return
28-
const offset: number = document.offsetAt(position)
29-
const sendToEmmet = document.getText().slice(offset + result.emmetTextOffset, offset)
27+
const curosrOffset: number = document.offsetAt(position)
28+
29+
if (context.triggerKind !== vscode.CompletionTriggerKind.TriggerForIncompleteCompletions || !lastStartOffset) {
30+
const result = await sendCommand<EmmetResult>('emmet-completions', { document, position })
31+
if (!result) {
32+
lastStartOffset = undefined
33+
return
34+
}
35+
lastStartOffset = curosrOffset + result.emmetTextOffset
36+
}
37+
38+
const sendToEmmet = document.getText().slice(lastStartOffset, curosrOffset)
3039
const emmetCompletions = emmet.doComplete(
3140
{
3241
getText: () => sendToEmmet,

0 commit comments

Comments
 (0)