Skip to content

Commit 417568c

Browse files
committed
fix: when arrayMethods and fixPropertiesSorting is enabled fix .filter wasn't appearing above .fill after . e.g. [].
1 parent ffddfe1 commit 417568c

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

typescript/src/completions/arrayMethods.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,30 @@ export default (entries: ts.CompletionEntry[], position: number, sourceFile: ts.
3939
inferredName = defaultItemName
4040
}
4141

42+
// workaround for
43+
// https://github.com/microsoft/vscode/blob/4765b898acb38a44f9dd8fa7ed48e833fff6ecc6/extensions/typescript-language-features/src/languageFeatures/completions.ts#L99
44+
// (overriding default range)
45+
// after []. .fill was appearing above .filter becuase .filter is snippet in insertText, not changing insertText of .fill so vscode method completions calls work as expected
46+
const resetRangeKinds = fullText.slice(position - 1, position) === '.' && [
47+
ts.ScriptElementKind.constElement,
48+
ts.ScriptElementKind.memberFunctionElement,
49+
ts.ScriptElementKind.memberVariableElement,
50+
]
51+
52+
const arrayItemSnippet = c('arrayMethodsSnippets.addArgTabStop') ? `(\${2:${inferredName}})` : inferredName
53+
let insertInnerSnippet = `${arrayItemSnippet} => $3`
54+
if (c('arrayMethodsSnippets.addOuterTabStop')) insertInnerSnippet = `\${1:${insertInnerSnippet}}`
55+
4256
return entries.map(entry => {
43-
if (!arrayMethodsToPatch.includes(entry.name.replace(/^ /, ''))) return entry
44-
const arrayItemSnippet = c('arrayMethodsSnippets.addArgTabStop') ? `(\${2:${inferredName}})` : inferredName
45-
let insertInnerSnippet = `${arrayItemSnippet} => $3`
46-
if (c('arrayMethodsSnippets.addOuterTabStop')) insertInnerSnippet = `\${1:${insertInnerSnippet}}`
57+
if (!arrayMethodsToPatch.includes(entry.name.replace(/^ /, ''))) {
58+
if (resetRangeKinds && resetRangeKinds.includes(entry.kind) && !entry.replacementSpan) {
59+
return {
60+
...entry,
61+
replacementSpan: { start: position, length: 0 },
62+
}
63+
}
64+
return entry
65+
}
4766
return {
4867
...entry,
4968
insertText: `${entry.insertText ?? entry.name}(${insertInnerSnippet})`,

0 commit comments

Comments
 (0)