From c930264b3ec2eb2b1369c9e5e2a9fd57bfc739dd Mon Sep 17 00:00:00 2001 From: Roland Grunberg Date: Mon, 10 Mar 2025 16:58:33 -0400 Subject: [PATCH] Fix indentation for snippet strings within code actions. - Language server (JDT-LS) handles appropriate indentation so indicate to client that whitespace is to be preserved Signed-off-by: Roland Grunberg --- src/extension.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 6a139d8d09..6d26013718 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -6,7 +6,7 @@ import * as fse from 'fs-extra'; import * as os from 'os'; import * as path from 'path'; import * as semver from 'semver'; -import { CodeActionContext, commands, CompletionItem, ConfigurationTarget, Diagnostic, env, EventEmitter, ExtensionContext, extensions, IndentAction, InputBoxOptions, languages, Location, MarkdownString, QuickPickItemKind, Range, RelativePattern, SnippetString, SnippetTextEdit, TextDocument, TextEditorRevealType, UIKind, Uri, ViewColumn, window, workspace, WorkspaceConfiguration, WorkspaceEdit } from 'vscode'; +import { CodeActionContext, commands, CompletionItem, ConfigurationTarget, Diagnostic, env, EventEmitter, ExtensionContext, extensions, IndentAction, InputBoxOptions, languages, Location, MarkdownString, QuickPickItemKind, Range, RelativePattern, SnippetString, SnippetTextEdit, TextDocument, TextEditorRevealType, UIKind, Uri, version, ViewColumn, window, workspace, WorkspaceConfiguration, WorkspaceEdit } from 'vscode'; import { CancellationToken, CodeActionParams, CodeActionRequest, CodeActionResolveRequest, Command, CompletionRequest, DidChangeConfigurationNotification, ExecuteCommandParams, ExecuteCommandRequest, LanguageClientOptions, RevealOutputChannelOn } from 'vscode-languageclient'; import { LanguageClient } from 'vscode-languageclient/node'; import { apiManager } from './apiManager'; @@ -318,7 +318,11 @@ export async function activate(context: ExtensionContext): Promise for (const edit of docChange.edits) { if ("snippet" in edit) { documentUris.push(Uri.parse(docChange.textDocument.uri).toString()); - snippetEdits.push(new SnippetTextEdit(client.protocol2CodeConverter.asRange((edit as any).range), new SnippetString((edit as any).snippet.value))); + const snippet = new SnippetTextEdit(client.protocol2CodeConverter.asRange((edit as any).range), new SnippetString((edit as any).snippet.value)); + if (semver.gte(version, '1.98.0')) { + snippet["keepWhitespace"] = true; + } + snippetEdits.push(snippet); } } }