Skip to content

Commit 69d0a9f

Browse files
committed
feat: Add all value to methodSnippets.skip to get the same behavior as WebStorm has out of the box
feat(based-on-feedback): Change default of `methodSnippets.skip` to `optional-and-rest` so it prefills only required params out of the box. Motivation: align default with vscode builtin behavior. fix(method-snippets): `?` for optional arguments should be inserted only when insertMode is `always-declaration`
1 parent f89250c commit 69d0a9f

File tree

4 files changed

+15
-8
lines changed

4 files changed

+15
-8
lines changed

src/configurationType.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -354,14 +354,16 @@ export type Configuration = {
354354
*
355355
* // only-rest
356356
* example({ a }, b, c)
357-
* // optional-and-rest (popular)
357+
* // optional-and-rest (default)
358358
* example({ a })
359-
* // no-skip (default)
359+
* // all
360+
* example() // (cursor inside)
361+
* // no-skip (popular)
360362
* example({ a }, b, c, ...d)
361363
* ```
362-
* @default no-skip
364+
* @default optional-and-rest
363365
*/
364-
'methodSnippets.skip': 'only-rest' | 'optional-and-rest' | 'no-skip'
366+
'methodSnippets.skip': 'only-rest' | 'optional-and-rest' | 'all' | 'no-skip'
365367
/**
366368
* @default pick-first
367369
*/

typescript/src/constructMethodSnippet.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export default (languageService: ts.LanguageService, sourceFile: ts.SourceFile,
2424
const { parameters } = signatures[0]!
2525
const printer = ts.createPrinter()
2626
const paramsToInsert = compact(
27-
parameters.map(param => {
27+
(skipMode === 'all' ? [] : parameters).map(param => {
2828
const valueDeclaration = param.valueDeclaration as ts.ParameterDeclaration | undefined
2929
const isOptional =
3030
valueDeclaration && (valueDeclaration.questionToken || valueDeclaration.initializer || valueDeclaration.dotDotDotToken) ? true : false
@@ -47,7 +47,7 @@ export default (languageService: ts.LanguageService, sourceFile: ts.SourceFile,
4747
!ts.isIdentifier(valueDeclaration.name) && insertMode !== 'always-declaration'
4848
? cloneBindingName(valueDeclaration.name)
4949
: valueDeclaration.name,
50-
valueDeclaration.questionToken,
50+
insertMode === 'always-declaration' ? valueDeclaration.questionToken : undefined,
5151
undefined,
5252
insertMode === 'always-declaration' ? valueDeclaration.initializer : undefined,
5353
),

typescript/test/completions.spec.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ describe('Method snippets', () => {
156156
compareMethodSnippetAgainstMarker(markers, 2, '()')
157157
compareMethodSnippetAgainstMarker(markers, 3, '(a)')
158158
compareMethodSnippetAgainstMarker(markers, 4, '($b)')
159-
compareMethodSnippetAgainstMarker(markers, 5, '(a, b?, { d, e: {} }, ...c)')
159+
compareMethodSnippetAgainstMarker(markers, 5, '(a, b, { d, e: {} }, ...c)')
160160
})
161161

162162
test('Insert text = always-declaration', () => {
@@ -175,7 +175,7 @@ describe('Method snippets', () => {
175175
settingsOverride['methodSnippets.insertText'] = 'binding-name'
176176
})
177177

178-
test('methodSnippets.skip = optional-and-rest', () => {
178+
test('methodSnippets.skip', () => {
179179
settingsOverride['methodSnippets.skip'] = 'optional-and-rest'
180180
const [, _, markers] = fileContentsSpecialPositions(/* ts */ `
181181
declare const baz: {
@@ -191,6 +191,10 @@ describe('Method snippets', () => {
191191

192192
compareMethodSnippetAgainstMarker(markers, 1, [''])
193193
compareMethodSnippetAgainstMarker(markers, 2, ['a'])
194+
settingsOverride['methodSnippets.skip'] = 'only-rest'
195+
compareMethodSnippetAgainstMarker(markers, 1, ['a', 'b', '{ d, e: {} }'])
196+
settingsOverride['methodSnippets.skip'] = 'all'
197+
compareMethodSnippetAgainstMarker(markers, 2, [''])
194198
settingsOverride['methodSnippets.skip'] = 'no-skip'
195199
})
196200
})

typescript/test/shared.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ export const sharedLanguageService = createLanguageService({ [entrypoint]: '' },
1414
export const settingsOverride: Partial<Configuration> = {
1515
'arrayMethodsSnippets.enable': true,
1616
'codeActions.extractTypeInferName': true,
17+
'methodSnippets.skip': 'no-skip',
1718
}
1819
export const defaultConfigFunc = await getDefaultConfigFunc(settingsOverride)

0 commit comments

Comments
 (0)