Don't register js/ts paste provider if setting is off (#216168)

This commit is contained in:
Matt Bierner 2024-06-17 15:14:59 -07:00 committed by GitHub
parent 3a682a623b
commit 61eba45dc4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 4 deletions

View file

@ -1316,14 +1316,14 @@
"scope": "window"
},
"javascript.experimental.updateImportsOnPaste": {
"scope": "resource",
"scope": "window",
"type": "boolean",
"default": false,
"description": "%configuration.updateImportsOnPaste%",
"tags": ["experimental"]
},
"typescript.experimental.updateImportsOnPaste": {
"scope": "resource",
"scope": "window",
"type": "boolean",
"default": false,
"description": "%configuration.updateImportsOnPaste%",

View file

@ -7,7 +7,7 @@ import * as vscode from 'vscode';
import { DocumentSelector } from '../configuration/documentSelector';
import * as typeConverters from '../typeConverters';
import { ClientCapability, ITypeScriptServiceClient } from '../typescriptService';
import { conditionalRegistration, requireMinVersion, requireSomeCapability } from './util/dependentRegistration';
import { conditionalRegistration, requireGlobalConfiguration, requireMinVersion, requireSomeCapability } from './util/dependentRegistration';
import protocol from '../tsServer/protocol/protocol';
import { API } from '../tsServer/api';
import { LanguageDescription } from '../configuration/languageDescription';
@ -38,6 +38,8 @@ class CopyMetadata {
}
}
const settingId = 'experimental.updateImportsOnPaste';
class DocumentPasteProvider implements vscode.DocumentPasteEditProvider {
static readonly kind = vscode.DocumentDropOrPasteEditKind.Empty.append('text', 'jsts', 'pasteWithImports');
@ -61,7 +63,7 @@ class DocumentPasteProvider implements vscode.DocumentPasteEditProvider {
token: vscode.CancellationToken,
): Promise<vscode.DocumentPasteEdit[] | undefined> {
const config = vscode.workspace.getConfiguration(this._modeId, document.uri);
if (!config.get('experimental.updateImportsOnPaste', false)) {
if (!config.get(settingId, false)) {
return;
}
@ -131,6 +133,7 @@ export function register(selector: DocumentSelector, language: LanguageDescripti
return conditionalRegistration([
requireSomeCapability(client, ClientCapability.Semantic),
requireMinVersion(client, API.v560),
requireGlobalConfiguration(language.id, settingId),
], () => {
return vscode.languages.registerDocumentPasteEditProvider(selector.semantic, new DocumentPasteProvider(language.id, client), {
providedPasteEditKinds: [DocumentPasteProvider.kind],