diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index 6c14893c4..6fd399b0e 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -1086,23 +1086,27 @@ async function activateWithInstalledDistribution( // Jump-to-definition and find-references void extLogger.log("Registering jump-to-definition handlers."); - languages.registerDefinitionProvider( - { scheme: zipArchiveScheme }, - new TemplateQueryDefinitionProvider( - cliServer, - qs, - dbm, - contextualQueryStorageDir, + ctx.subscriptions.push( + languages.registerDefinitionProvider( + { scheme: zipArchiveScheme }, + new TemplateQueryDefinitionProvider( + cliServer, + qs, + dbm, + contextualQueryStorageDir, + ), ), ); - languages.registerReferenceProvider( - { scheme: zipArchiveScheme }, - new TemplateQueryReferenceProvider( - cliServer, - qs, - dbm, - contextualQueryStorageDir, + ctx.subscriptions.push( + languages.registerReferenceProvider( + { scheme: zipArchiveScheme }, + new TemplateQueryReferenceProvider( + cliServer, + qs, + dbm, + contextualQueryStorageDir, + ), ), ); diff --git a/extensions/ql-vscode/src/language-support/contextual/template-provider.ts b/extensions/ql-vscode/src/language-support/contextual/template-provider.ts index 6fb661b71..8f9098ebb 100644 --- a/extensions/ql-vscode/src/language-support/contextual/template-provider.ts +++ b/extensions/ql-vscode/src/language-support/contextual/template-provider.ts @@ -88,25 +88,18 @@ export class TemplateQueryDefinitionProvider implements DefinitionProvider { uriString: string, token: CancellationToken, ): Promise { - return withProgress( - async (progress, tokenInner) => { - const multiToken = new MultiCancellationToken(token, tokenInner); - return getLocationsForUriString( - this.cli, - this.qs, - this.dbm, - uriString, - KeyType.DefinitionQuery, - this.queryStorageDir, - progress, - multiToken, - (src, _dest) => src === uriString, - ); - }, - { - cancellable: true, - title: "Finding definitions", - }, + // Do not create a multitoken here. There will be no popup and users cannot click on anything to cancel this operation. + // This is because finding definitions can be triggered by a hover, which should not have a popup. + return getLocationsForUriString( + this.cli, + this.qs, + this.dbm, + uriString, + KeyType.DefinitionQuery, + this.queryStorageDir, + () => {}, // noop + token, + (src, _dest) => src === uriString, ); } } @@ -161,6 +154,7 @@ export class TemplateQueryReferenceProvider implements ReferenceProvider { uriString: string, token: CancellationToken, ): Promise { + // Create a multitoken here. There will be a popup and users can click on it to cancel this operation. return withProgress( async (progress, tokenInner) => { const multiToken = new MultiCancellationToken(token, tokenInner);