-
-
Notifications
You must be signed in to change notification settings - Fork 435
/
Copy pathproblem-manager.ts
61 lines (56 loc) · 1.94 KB
/
problem-manager.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import {
inject,
injectable,
postConstruct,
} from '@theia/core/shared/inversify';
import { Diagnostic } from '@theia/core/shared/vscode-languageserver-types';
import URI from '@theia/core/lib/common/uri';
import { Marker } from '@theia/markers/lib/common/marker';
import { ProblemManager as TheiaProblemManager } from '@theia/markers/lib/browser/problem/problem-manager';
import { ConfigServiceClient } from '../../config/config-service-client';
import debounce = require('lodash.debounce');
import {
ARDUINO_CLOUD_FOLDER,
REMOTE_SKETCHBOOK_FOLDER,
} from '../../utils/constants';
@injectable()
export class ProblemManager extends TheiaProblemManager {
@inject(ConfigServiceClient)
private readonly configService: ConfigServiceClient;
private dataDirUri: URI | undefined;
private cloudCacheDirUri: URI | undefined;
@postConstruct()
protected override init(): void {
super.init();
this.dataDirUri = this.configService.tryGetDataDirUri();
this.configService.onDidChangeDataDirUri((uri) => {
this.dataDirUri = uri;
this.cloudCacheDirUri = this.dataDirUri
?.resolve(REMOTE_SKETCHBOOK_FOLDER)
.resolve(ARDUINO_CLOUD_FOLDER);
});
}
override setMarkers(
uri: URI,
owner: string,
data: Diagnostic[]
): Marker<Diagnostic>[] {
if (
this.dataDirUri &&
this.dataDirUri.isEqualOrParent(uri) &&
this.cloudCacheDirUri && // Do not disable the diagnostics for cloud sketches https://github.com/arduino/arduino-ide/issues/669
!this.cloudCacheDirUri.isEqualOrParent(uri)
) {
// If in directories.data folder but not in the cloud sketchbook cache folder.
return [];
}
return super.setMarkers(uri, owner, data);
}
private readonly debouncedFireOnDidChangeMakers = debounce(
(uri: URI) => this.onDidChangeMarkersEmitter.fire(uri),
500
);
protected override fireOnDidChangeMarkers(uri: URI): void {
this.debouncedFireOnDidChangeMakers(uri);
}
}