From 4b2c1138af3734f08f19a8f88b5576436f5c4bf1 Mon Sep 17 00:00:00 2001 From: Rafal Chlodnicki Date: Fri, 31 Oct 2025 10:12:06 +0100 Subject: [PATCH 1/3] feat: support passing "mode" to organize imports command --- README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ab12c490..35aa63ba 100644 --- a/README.md +++ b/README.md @@ -156,8 +156,16 @@ Request: { command: '_typescript.organizeImports' arguments: [ - // The "skipDestructiveCodeActions" argument is supported from Typescript 4.4+ - [string] | [string, { skipDestructiveCodeActions?: boolean }], + string, // file URI + // Optional options: + { + // @deprecated - use "mode". Supported from Typescript 4.4+. + skipDestructiveCodeActions?: boolean + // 'All' - organizes imports including destructive actions (removing unused imports) + // 'SortAndCombine' - Doesn't perform destructive actions. + // 'RemoveUnused' - Only removes unused imports. + mode?: 'All' | 'SortAndCombine' | 'RemoveUnused' + }, ] } ``` From b37054b118d4530fb7f8b9111459297e441e07be Mon Sep 17 00:00:00 2001 From: Rafal Chlodnicki Date: Fri, 31 Oct 2025 10:15:18 +0100 Subject: [PATCH 2/3] update code --- src/lsp-server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lsp-server.ts b/src/lsp-server.ts index 30dc102b..b4dfd66b 100644 --- a/src/lsp-server.ts +++ b/src/lsp-server.ts @@ -903,7 +903,7 @@ export class LspServer { return; } - const additionalArguments = (params.arguments[1] || {}) as { skipDestructiveCodeActions?: boolean; }; + const additionalArguments = (params.arguments[1] || {}) as { skipDestructiveCodeActions?: boolean; mode?: OrganizeImportsMode; }; const body = await this.tsClient.interruptGetErr(async () => { await this.fileConfigurationManager.ensureConfigurationForDocument(document); const response = await this.tsClient.execute( From b3217675d6b867af90745527ab18f376fb2dcf36 Mon Sep 17 00:00:00 2001 From: Rafal Chlodnicki Date: Fri, 31 Oct 2025 10:21:10 +0100 Subject: [PATCH 3/3] update code --- src/lsp-server.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lsp-server.ts b/src/lsp-server.ts index b4dfd66b..1eb94781 100644 --- a/src/lsp-server.ts +++ b/src/lsp-server.ts @@ -906,6 +906,7 @@ export class LspServer { const additionalArguments = (params.arguments[1] || {}) as { skipDestructiveCodeActions?: boolean; mode?: OrganizeImportsMode; }; const body = await this.tsClient.interruptGetErr(async () => { await this.fileConfigurationManager.ensureConfigurationForDocument(document); + const mode = additionalArguments.mode ?? (additionalArguments.skipDestructiveCodeActions ? OrganizeImportsMode.SortAndCombine : OrganizeImportsMode.All); const response = await this.tsClient.execute( CommandTypes.OrganizeImports, { @@ -915,7 +916,7 @@ export class LspServer { }, // Deprecated in 4.9; `mode` takes priority skipDestructiveCodeActions: additionalArguments.skipDestructiveCodeActions, - mode: additionalArguments.skipDestructiveCodeActions ? OrganizeImportsMode.SortAndCombine : OrganizeImportsMode.All, + mode, }, token, );