Skip to content

Commit 149119c

Browse files
committed
fix: correctly pass all unknown params for new TS protocol features
fixes #209
1 parent 23cf01a commit 149119c

12 files changed

+44
-27
lines changed

typescript/src/codeFixes.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { findChildContainingPosition, getCancellationToken, getIndentFromPos, is
55
import namespaceAutoImports from './namespaceAutoImports'
66

77
export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => {
8-
proxy.getCodeFixesAtPosition = (fileName, start, end, errorCodes, formatOptions, preferences) => {
8+
proxy.getCodeFixesAtPosition = (fileName, start, end, errorCodes, formatOptions, preferences, ...args) => {
99
const sourceFile = languageService.getProgram()!.getSourceFile(fileName)!
1010
const node = findChildContainingPosition(ts, sourceFile, start)
1111

@@ -72,7 +72,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService,
7272
},
7373
)
7474
toUnpatch.push(unpatch)
75-
prior = languageService.getCodeFixesAtPosition(fileName, start, end, errorCodes, formatOptions, preferences)
75+
prior = languageService.getCodeFixesAtPosition(fileName, start, end, errorCodes, formatOptions, preferences, ...args)
7676
prior = [...addNamespaceImports, ...prior]
7777
prior = _.sortBy(prior, ({ fixName }) => {
7878
if (fixName.startsWith(importFixName)) {
@@ -82,7 +82,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService,
8282
})
8383
prior = prior.filter(x => x.fixName !== 'IGNORE')
8484
} catch (err) {
85-
prior = languageService.getCodeFixesAtPosition(fileName, start, end, errorCodes, formatOptions, preferences)
85+
prior = languageService.getCodeFixesAtPosition(fileName, start, end, errorCodes, formatOptions, preferences, ...args)
8686
setTimeout(() => {
8787
// make sure we still get code fixes, but error is still getting reported
8888
console.error(err)

typescript/src/completionEntryDetails.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default function completionEntryDetails(
1616
c: GetConfig,
1717
{ enableMethodCompletion, completionsSymbolMap }: PrevCompletionsAdditionalData,
1818
): ts.CompletionEntryDetails | undefined {
19-
const [fileName, position, entryName, formatOptions, source, preferences, data] = inputArgs
19+
const [fileName, position, entryName, formatOptions, source, preferences, data, ...args] = inputArgs
2020
lastResolvedCompletion.value = { name: entryName, range: prevCompletionsMap[entryName]?.range }
2121
const program = languageService.getProgram()
2222
const sourceFile = program?.getSourceFile(fileName)
@@ -54,6 +54,7 @@ export default function completionEntryDetails(
5454
source,
5555
preferences,
5656
data,
57+
...args,
5758
)
5859
if (detailPrepend) {
5960
prior ??= {

typescript/src/completionsAtPosition.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ export const getCompletionsAtPosition = (
6868
scriptSnapshot: ts.IScriptSnapshot,
6969
formatOptions: ts.FormatCodeSettings | undefined,
7070
additionalData: { scriptKind: ts.ScriptKind; compilerOptions: ts.CompilerOptions },
71+
...args: any[]
7172
): GetCompletionAtPositionReturnType | undefined => {
7273
const prevCompletionsMap: PrevCompletionMap = {}
7374
const program = languageService.getProgram()
@@ -94,6 +95,8 @@ export const getCompletionsAtPosition = (
9495
includeSymbol: true,
9596
},
9697
formatOptions,
98+
//@ts-expect-error
99+
...args,
97100
)
98101
} finally {
99102
unpatch?.()

typescript/src/decorateEditsForFileRename.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import { GetConfig } from './types'
44
import { approveCast, findChildContainingExactPosition } from './utils'
55

66
export default (proxy: ts.LanguageService, languageService: ts.LanguageService, c: GetConfig) => {
7-
proxy.getEditsForFileRename = (oldFilePath, newFilePath, formatOptions, preferences) => {
8-
let edits = languageService.getEditsForFileRename(oldFilePath, newFilePath, formatOptions, preferences)
7+
proxy.getEditsForFileRename = (oldFilePath, newFilePath, formatOptions, preferences, ...args) => {
8+
let edits = languageService.getEditsForFileRename(oldFilePath, newFilePath, formatOptions, preferences, ...args)
99
if (c('renameImportNameOfFileRename')) {
1010
const predictedNameFromPath = (p: string) => {
1111
const input = p.split(/[/\\]/g).pop()!.replace(/\..+/, '')

typescript/src/decorateLinkedEditing.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService,
1010
result: ts.LinkedEditingInfo
1111
}
1212
| undefined
13-
proxy.getLinkedEditingRangeAtPosition = (fileName, position) => {
13+
proxy.getLinkedEditingRangeAtPosition = (fileName, position, ...props) => {
1414
const scriptSnapshot = languageServiceHost.getScriptSnapshot(fileName)!
1515
const fileContent = scriptSnapshot.getText(0, scriptSnapshot.getLength())
1616
const lastChar = fileContent[position - 1]
@@ -37,7 +37,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService,
3737
}
3838
lastLinkedEditingRangeRequest = undefined
3939

40-
const prior = languageService.getLinkedEditingRangeAtPosition(fileName, position)
40+
const prior = languageService.getLinkedEditingRangeAtPosition(fileName, position, ...props)
4141
if (!prior) return
4242
lastLinkedEditingRangeRequest = {
4343
pos: position,

typescript/src/decorateProxy.ts

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import decorateDefinitions from './definitions'
1212
import decorateDocumentHighlights from './documentHighlights'
1313
import completionEntryDetails from './completionEntryDetails'
1414
import { GetConfig, PluginCreateArg } from './types'
15-
import decorateWorkspaceSymbolSearch from './workspaceSymbolSearch'
15+
import decorateWorkspaceSymbolSearch from './decorateWorkspaceSymbolSearch'
1616
import decorateFormatFeatures from './decorateFormatFeatures'
1717
import libDomPatching from './libDomPatching'
1818
import decorateSignatureHelp from './decorateSignatureHelp'
@@ -51,9 +51,9 @@ export const decorateLanguageService = (
5151
let prevCompletionsMap: PrevCompletionMap
5252
let prevCompletionsAdditionalData: PrevCompletionsAdditionalData
5353

54-
proxy.getCompletionsAtPosition = (fileName, position, options, formatOptions) => {
54+
proxy.getCompletionsAtPosition = (fileName, position, options, formatOptions, ...args) => {
5555
if (options?.triggerCharacter && typeof options.triggerCharacter !== 'string') {
56-
return languageService.getCompletionsAtPosition(fileName, position, options)
56+
return languageService.getCompletionsAtPosition(fileName, position, options, formatOptions, ...args)
5757
}
5858
const updateConfigCommand = 'updateConfig'
5959
if (options?.triggerCharacter?.startsWith(updateConfigCommand)) {
@@ -87,10 +87,21 @@ export const decorateLanguageService = (
8787
if (!scriptSnapshot) return
8888
const compilerOptions = languageServiceHost.getCompilationSettings()
8989
try {
90-
const result = getCompletionsAtPosition(fileName, position, options, c, languageService, languageServiceHost, scriptSnapshot, formatOptions, {
91-
scriptKind,
92-
compilerOptions,
93-
})
90+
const result = getCompletionsAtPosition(
91+
fileName,
92+
position,
93+
options,
94+
c,
95+
languageService,
96+
languageServiceHost,
97+
scriptSnapshot,
98+
formatOptions,
99+
{
100+
scriptKind,
101+
compilerOptions,
102+
},
103+
...args,
104+
)
94105
if (!result) return
95106
prevCompletionsMap = result.prevCompletionsMap
96107
prevCompletionsAdditionalData = result.prevCompletionsAdditionalData

typescript/src/decorateSignatureHelp.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { GetConfig } from './types'
33
import { findChildContainingExactPosition } from './utils'
44

55
export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => {
6-
proxy.getSignatureHelpItems = (fileName, position, options) => {
6+
proxy.getSignatureHelpItems = (fileName, position, options, ...props) => {
77
const program = languageService.getProgram()!
88
const sourceFile = program.getSourceFile(fileName)!
99
let node: ts.Node | undefined
@@ -40,7 +40,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService,
4040
}
4141

4242
if (!c('signatureHelp.excludeBlockScope') || options?.triggerReason?.kind !== 'invoked') {
43-
return languageService.getSignatureHelpItems(fileName, position, options)
43+
return languageService.getSignatureHelpItems(fileName, position, options, ...props)
4444
}
4545

4646
node ??= findChildContainingExactPosition(sourceFile, position)
@@ -59,6 +59,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService,
5959
kind: 'retrigger',
6060
},
6161
},
62+
...props,
6263
)
6364
}
6465
}

typescript/src/workspaceSymbolSearch.ts renamed to typescript/src/decorateWorkspaceSymbolSearch.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import { GetConfig } from './types'
22
import { getCancellationToken } from './utils'
33

44
export default (proxy: ts.LanguageService, languageService: ts.LanguageService, c: GetConfig, languageServiceHost: ts.LanguageServiceHost) => {
5-
proxy.getNavigateToItems = (searchValue, maxResultCount, fileName, excludeDtsFiles) => {
5+
proxy.getNavigateToItems = (searchValue, maxResultCount, fileName, excludeDtsFiles, ...args) => {
66
const workspaceSymbolSearchExcludePatterns = c('workspaceSymbolSearchExcludePatterns')
77
if (workspaceSymbolSearchExcludePatterns.length === 0) {
8-
return languageService.getNavigateToItems(searchValue, maxResultCount, fileName, excludeDtsFiles)
8+
return languageService.getNavigateToItems(searchValue, maxResultCount, fileName, excludeDtsFiles, ...args)
99
}
1010

1111
const program = languageService.getProgram()!
@@ -25,6 +25,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService,
2525
searchValue,
2626
maxResultCount,
2727
excludeDtsFiles ?? false,
28+
...args
2829
)
2930
}
3031
}

typescript/src/definitions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { GetConfig } from './types'
33
import { findChildContainingExactPosition } from './utils'
44

55
export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => {
6-
proxy.getDefinitionAndBoundSpan = (fileName, position) => {
7-
const prior = languageService.getDefinitionAndBoundSpan(fileName, position)
6+
proxy.getDefinitionAndBoundSpan = (fileName, position, ...props) => {
7+
const prior = languageService.getDefinitionAndBoundSpan(fileName, position, ...props)
88

99
if (c('removeModuleFileDefinitions') && prior) {
1010
prior.definitions = prior.definitions?.filter(def => {

typescript/src/documentHighlights.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { GetConfig } from './types'
22
import { findChildContainingPosition } from './utils'
33

44
export default (proxy: ts.LanguageService, languageService: ts.LanguageService, c: GetConfig) => {
5-
proxy.getDocumentHighlights = (fileName, position, filesToSearch) => {
6-
const prior = languageService.getDocumentHighlights(fileName, position, filesToSearch)
5+
proxy.getDocumentHighlights = (fileName, position, filesToSearch, ...props) => {
6+
const prior = languageService.getDocumentHighlights(fileName, position, filesToSearch, ...props)
77
if (!prior) return
88
if (prior.length !== 1 || c('disableUselessHighlighting') === 'disable') return prior
99
const node = findChildContainingPosition(ts, languageService.getProgram()!.getSourceFile(fileName)!, position)

typescript/src/references.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { GetConfig } from './types'
22
import { findChildContainingPositionMaxDepth, approveCast, findChildContainingExactPosition, matchParents } from './utils'
33

44
export default (proxy: ts.LanguageService, languageService: ts.LanguageService, c: GetConfig) => {
5-
proxy.findReferences = (fileName, position) => {
6-
let prior = languageService.findReferences(fileName, position)
5+
proxy.findReferences = (fileName, position, ...props) => {
6+
let prior = languageService.findReferences(fileName, position, ...props)
77
if (!prior) return
88
const program = languageService.getProgram()!
99
if (c('removeDefinitionFromReferences')) {

typescript/src/semanticDiagnostics.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { GetConfig } from './types'
22

33
export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => {
4-
proxy.getSemanticDiagnostics = fileName => {
5-
let prior = languageService.getSemanticDiagnostics(fileName)
4+
proxy.getSemanticDiagnostics = (fileName, ...props) => {
5+
let prior = languageService.getSemanticDiagnostics(fileName, ...props)
66
if (c('supportTsDiagnosticDisableComment')) {
77
const scriptSnapshot = languageServiceHost.getScriptSnapshot(fileName)!
88
const firstLine = scriptSnapshot.getText(0, scriptSnapshot.getLength()).split(/\r?\n/)[0]!

0 commit comments

Comments
 (0)