mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-28 12:33:35 +01:00
add git.decorations.enabled setting, #37299
This commit is contained in:
@@ -118,15 +118,35 @@ class GitDecorationProvider implements DecorationProvider {
|
||||
|
||||
export class GitDecorations {
|
||||
|
||||
private disposables: Disposable[] = [];
|
||||
private configListener: Disposable;
|
||||
private modelListener: Disposable[] = [];
|
||||
private providers = new Map<Repository, Disposable>();
|
||||
|
||||
constructor(private model: Model) {
|
||||
this.disposables.push(
|
||||
model.onDidOpenRepository(this.onDidOpenRepository, this),
|
||||
model.onDidCloseRepository(this.onDidCloseRepository, this)
|
||||
);
|
||||
model.repositories.forEach(this.onDidOpenRepository, this);
|
||||
this.configListener = workspace.onDidChangeConfiguration(e => e.affectsConfiguration('git.decorations.enabled') && this.update());
|
||||
this.update();
|
||||
}
|
||||
|
||||
private update(): void {
|
||||
const enabled = workspace.getConfiguration('git').get('decorations.enabled');
|
||||
if (enabled) {
|
||||
this.enable();
|
||||
} else {
|
||||
this.disable();
|
||||
}
|
||||
}
|
||||
|
||||
private enable(): void {
|
||||
this.modelListener = [];
|
||||
this.model.onDidOpenRepository(this.onDidOpenRepository, this, this.modelListener);
|
||||
this.model.onDidCloseRepository(this.onDidCloseRepository, this, this.modelListener);
|
||||
this.model.repositories.forEach(this.onDidOpenRepository, this);
|
||||
}
|
||||
|
||||
private disable(): void {
|
||||
this.modelListener.forEach(d => d.dispose());
|
||||
this.providers.forEach(value => value.dispose());
|
||||
this.providers.clear();
|
||||
}
|
||||
|
||||
private onDidOpenRepository(repository: Repository): void {
|
||||
@@ -144,7 +164,8 @@ export class GitDecorations {
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
this.disposables.forEach(d => d.dispose());
|
||||
this.configListener.dispose();
|
||||
this.modelListener.forEach(d => d.dispose());
|
||||
this.providers.forEach(value => value.dispose);
|
||||
this.providers.clear();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user