From 21504708043941c1e9e45b7d0892a9a8a03470d7 Mon Sep 17 00:00:00 2001 From: "Babak K. Shandiz" Date: Mon, 1 Aug 2022 21:13:31 +0430 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=81=20Add=20option=20to=20disable=20sc?= =?UTF-8?q?ript=20hovers=20in=20`package.json`=20files=20(#156752)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ⚙️ Define `npm.scriptHover` configuration parameter Signed-off-by: Babak K. Shandiz * 🌐 Add localized description for `npm.scriptHover` config parameter Signed-off-by: Babak K. Shandiz * 🎁 Respect `npm.scriptHover` config parameter in `NpmScriptHoverProvider` Signed-off-by: Babak K. Shandiz --- extensions/npm/package.json | 6 ++++++ extensions/npm/package.nls.json | 1 + extensions/npm/src/scriptHover.ts | 13 +++++++++++++ 3 files changed, 20 insertions(+) diff --git a/extensions/npm/package.json b/extensions/npm/package.json index 6df1a4835e7..0a0cd05411f 100644 --- a/extensions/npm/package.json +++ b/extensions/npm/package.json @@ -298,6 +298,12 @@ "tags": [ "usesOnlineServices" ] + }, + "npm.scriptHover": { + "type": "boolean", + "description": "%config.npm.scriptHover%", + "default": true, + "scope": "window" } } }, diff --git a/extensions/npm/package.nls.json b/extensions/npm/package.nls.json index b0a4f06c01f..44f1d00f0f4 100644 --- a/extensions/npm/package.nls.json +++ b/extensions/npm/package.nls.json @@ -15,6 +15,7 @@ "config.npm.scriptExplorerExclude": "An array of regular expressions that indicate which scripts should be excluded from the NPM Scripts view.", "config.npm.enableRunFromFolder": "Enable running npm scripts contained in a folder from the Explorer context menu.", "config.npm.fetchOnlinePackageInfo": "Fetch data from https://registry.npmjs.org and https://registry.bower.io to provide auto-completion and information on hover features on npm dependencies.", + "config.npm.scriptHover": "Display hover with 'Run' and 'Debug' commands for scripts.", "npm.parseError": "Npm task detection: failed to parse the file {0}", "taskdef.script": "The npm script to customize.", "taskdef.path": "The path to the folder of the package.json file that provides the script. Can be omitted.", diff --git a/extensions/npm/src/scriptHover.ts b/extensions/npm/src/scriptHover.ts index b8924bb25df..c96f3330d39 100644 --- a/extensions/npm/src/scriptHover.ts +++ b/extensions/npm/src/scriptHover.ts @@ -33,6 +33,7 @@ export function invalidateHoverScriptsCache(document?: TextDocument) { } export class NpmScriptHoverProvider implements HoverProvider { + private enabled: boolean; constructor(private context: ExtensionContext) { context.subscriptions.push(commands.registerCommand('npm.runScriptFromHover', this.runScriptFromHover, this)); @@ -40,9 +41,21 @@ export class NpmScriptHoverProvider implements HoverProvider { context.subscriptions.push(workspace.onDidChangeTextDocument((e) => { invalidateHoverScriptsCache(e.document); })); + + const isEnabled = () => workspace.getConfiguration('npm').get('scriptHover', true); + this.enabled = isEnabled(); + context.subscriptions.push(workspace.onDidChangeConfiguration((e) => { + if (e.affectsConfiguration('npm.scriptHover')) { + this.enabled = isEnabled(); + } + })); } public provideHover(document: TextDocument, position: Position, _token: CancellationToken): ProviderResult { + if (!this.enabled) { + return; + } + let hover: Hover | undefined = undefined; if (!cachedDocument || cachedDocument.fsPath !== document.uri.fsPath) {