Skip to content

Commit bbff19b

Browse files
committed
allow to send onDidChangeInlayHints-event for specific uris, #130430
1 parent 9c6de0f commit bbff19b

File tree

7 files changed

+15
-9
lines changed

7 files changed

+15
-9
lines changed

src/vs/editor/common/modes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1755,7 +1755,7 @@ export interface InlayHint {
17551755
}
17561756

17571757
export interface InlayHintsProvider {
1758-
onDidChangeInlayHints?: Event<void> | undefined;
1758+
onDidChangeInlayHints?: Event<void | URI>;
17591759
provideInlayHints(model: model.ITextModel, range: Range, token: CancellationToken): ProviderResult<InlayHint[]>;
17601760
}
17611761

src/vs/editor/contrib/inlayHints/inlayHintsController.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,11 @@ export class InlayHintsController implements IEditorContribution {
151151
this._sessionDisposables.add(providerListener);
152152
for (const provider of InlayHintsProviderRegistry.all(model)) {
153153
if (typeof provider.onDidChangeInlayHints === 'function') {
154-
providerListener.add(provider.onDidChangeInlayHints(() => scheduler.schedule()));
154+
providerListener.add(provider.onDidChangeInlayHints(uri => {
155+
if (!uri || uri.toString() === model.uri.toString()) {
156+
scheduler.schedule();
157+
}
158+
}));
155159
}
156160
}
157161
}

src/vs/monaco.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6685,7 +6685,7 @@ declare namespace monaco.languages {
66856685
}
66866686

66876687
export interface InlayHintsProvider {
6688-
onDidChangeInlayHints?: IEvent<void> | undefined;
6688+
onDidChangeInlayHints?: IEvent<void | Uri>;
66896689
provideInlayHints(model: editor.ITextModel, range: Range, token: CancellationToken): ProviderResult<InlayHint[]>;
66906690
}
66916691

src/vs/vscode.proposed.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1844,7 +1844,7 @@ declare module 'vscode' {
18441844
* An optional event to signal that inlay hints have changed.
18451845
* @see {@link EventEmitter}
18461846
*/
1847-
onDidChangeInlayHints?: Event<void>;
1847+
onDidChangeInlayHints?: Event<undefined | Uri>;
18481848

18491849
/**
18501850
*

src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@ import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageCo
1616
import { LanguageConfiguration, IndentationRule, OnEnterRule } from 'vs/editor/common/modes/languageConfiguration';
1717
import { IModeService } from 'vs/editor/common/services/modeService';
1818
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
19-
import { URI } from 'vs/base/common/uri';
19+
import { URI, UriComponents } from 'vs/base/common/uri';
2020
import { Selection } from 'vs/editor/common/core/selection';
2121
import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions';
2222
import * as callh from 'vs/workbench/contrib/callHierarchy/common/callHierarchy';
2323
import * as typeh from 'vs/workbench/contrib/typeHierarchy/common/typeHierarchy';
2424
import { mixin } from 'vs/base/common/objects';
2525
import { decodeSemanticTokensDto } from 'vs/editor/common/services/semanticTokensDto';
26+
import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity';
2627

2728
@extHostNamedCustomer(MainContext.MainThreadLanguageFeatures)
2829
export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesShape {
@@ -34,6 +35,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
3435
constructor(
3536
extHostContext: IExtHostContext,
3637
@IModeService modeService: IModeService,
38+
@IUriIdentityService private readonly _uriIdentService: IUriIdentityService,
3739
) {
3840
this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostLanguageFeatures);
3941
this._modeService = modeService;
@@ -566,10 +568,10 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
566568
this._registrations.set(handle, modes.InlayHintsProviderRegistry.register(selector, provider));
567569
}
568570

569-
$emitInlayHintsEvent(eventHandle: number, event?: any): void {
571+
$emitInlayHintsEvent(eventHandle: number, event?: UriComponents): void {
570572
const obj = this._registrations.get(eventHandle);
571573
if (obj instanceof Emitter) {
572-
obj.fire(event);
574+
obj.fire(event && this._uriIdentService.asCanonicalUri(URI.revive(event)));
573575
}
574576
}
575577

src/vs/workbench/api/common/extHost.protocol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ export interface MainThreadLanguageFeaturesShape extends IDisposable {
412412
$registerInlineCompletionsSupport(handle: number, selector: IDocumentFilterDto[]): void;
413413
$registerSignatureHelpProvider(handle: number, selector: IDocumentFilterDto[], metadata: ISignatureHelpProviderMetadataDto): void;
414414
$registerInlayHintsProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;
415-
$emitInlayHintsEvent(eventHandle: number, event?: any): void;
415+
$emitInlayHintsEvent(eventHandle: number, event?: UriComponents): void;
416416
$registerDocumentLinkProvider(handle: number, selector: IDocumentFilterDto[], supportsResolve: boolean): void;
417417
$registerDocumentColorProvider(handle: number, selector: IDocumentFilterDto[]): void;
418418
$registerFoldingRangeProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;

src/vs/workbench/api/common/extHostLanguageFeatures.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1988,7 +1988,7 @@ export class ExtHostLanguageFeatures implements extHostProtocol.ExtHostLanguageF
19881988
let result = this._createDisposable(handle);
19891989

19901990
if (eventHandle !== undefined) {
1991-
const subscription = provider.onDidChangeInlayHints!(_ => this._proxy.$emitInlayHintsEvent(eventHandle));
1991+
const subscription = provider.onDidChangeInlayHints!(uri => this._proxy.$emitInlayHintsEvent(eventHandle, uri));
19921992
result = Disposable.from(result, subscription);
19931993
}
19941994
return result;

0 commit comments

Comments
 (0)