Skip to content

Commit 7a9d0aa

Browse files
authored
Merge pull request #8215 from microsoft/coleng/fix_inactive_regions
Fix issue with inactive regions disappearing when switching files
2 parents dfdb047 + a5f4a5a commit 7a9d0aa

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

Extension/src/LanguageServer/client.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -608,7 +608,7 @@ export interface Client {
608608
onDidChangeSettings(event: vscode.ConfigurationChangeEvent, isFirstClient: boolean): { [key: string]: string };
609609
onDidOpenTextDocument(document: vscode.TextDocument): void;
610610
onDidCloseTextDocument(document: vscode.TextDocument): void;
611-
onDidChangeVisibleTextEditors(editors: vscode.TextEditor[]): void;
611+
onDidChangeVisibleTextEditor(editor: vscode.TextEditor): void;
612612
onDidChangeTextDocument(textDocumentChangeEvent: vscode.TextDocumentChangeEvent): void;
613613
onRegisterCustomConfigurationProvider(provider: CustomConfigurationProvider1): Thenable<void>;
614614
updateCustomConfigurations(requestingProvider?: CustomConfigurationProvider1): Thenable<void>;
@@ -1496,15 +1496,13 @@ export class DefaultClient implements Client {
14961496
return changedSettings;
14971497
}
14981498

1499-
public onDidChangeVisibleTextEditors(editors: vscode.TextEditor[]): void {
1499+
public onDidChangeVisibleTextEditor(editor: vscode.TextEditor): void {
15001500
const settings: CppSettings = new CppSettings(this.RootUri);
15011501
if (settings.dimInactiveRegions) {
15021502
// Apply text decorations to inactive regions
1503-
for (const e of editors) {
1504-
const valuePair: DecorationRangesPair | undefined = this.inactiveRegionsDecorations.get(e.document.uri.toString());
1505-
if (valuePair) {
1506-
e.setDecorations(valuePair.decoration, valuePair.ranges); // VSCode clears the decorations when the text editor becomes invisible
1507-
}
1503+
const valuePair: DecorationRangesPair | undefined = this.inactiveRegionsDecorations.get(editor.document.uri.toString());
1504+
if (valuePair) {
1505+
editor.setDecorations(valuePair.decoration, valuePair.ranges); // VSCode clears the decorations when the text editor becomes invisible
15081506
}
15091507
}
15101508
}
@@ -2997,7 +2995,7 @@ class NullClient implements Client {
29972995
onDidChangeSettings(event: vscode.ConfigurationChangeEvent, isFirstClient: boolean): { [key: string]: string } { return {}; }
29982996
onDidOpenTextDocument(document: vscode.TextDocument): void { }
29992997
onDidCloseTextDocument(document: vscode.TextDocument): void { }
3000-
onDidChangeVisibleTextEditors(editors: vscode.TextEditor[]): void { }
2998+
onDidChangeVisibleTextEditor(editor: vscode.TextEditor): void { }
30012999
onDidChangeTextDocument(textDocumentChangeEvent: vscode.TextDocumentChangeEvent): void { }
30023000
onRegisterCustomConfigurationProvider(provider: CustomConfigurationProvider1): Thenable<void> { return Promise.resolve(); }
30033001
updateCustomConfigurations(requestingProvider?: CustomConfigurationProvider1): Thenable<void> { return Promise.resolve(); }

Extension/src/LanguageServer/extension.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ function onDidChangeTextEditorSelection(event: vscode.TextEditorSelectionChangeE
432432
clients.ActiveClient.selectionChanged(Range.create(event.selections[0].start, event.selections[0].end));
433433
}
434434

435-
export function processDelayedDidOpen(document: vscode.TextDocument): void {
435+
export function processDelayedDidOpen(document: vscode.TextDocument): boolean {
436436
const client: Client = clients.getClientFor(document.uri);
437437
if (client) {
438438
// Log warm start.
@@ -466,16 +466,21 @@ export function processDelayedDidOpen(document: vscode.TextDocument): void {
466466
if (!languageChanged) {
467467
finishDidOpen(document);
468468
}
469+
return true;
469470
}
470471
}
471472
}
473+
return false;
472474
}
473475

474476
function onDidChangeVisibleTextEditors(editors: vscode.TextEditor[]): void {
475477
// Process delayed didOpen for any visible editors we haven't seen before
476478
editors.forEach(editor => {
477479
if ((editor.document.uri.scheme === "file") && (editor.document.languageId === "c" || editor.document.languageId === "cpp" || editor.document.languageId === "cuda-cpp")) {
478-
processDelayedDidOpen(editor.document);
480+
if (!processDelayedDidOpen(editor.document)) {
481+
const client: Client = clients.getClientFor(editor.document.uri);
482+
client.onDidChangeVisibleTextEditor(editor);
483+
}
479484
}
480485
});
481486
}

0 commit comments

Comments
 (0)