Skip to content

Commit b3cc4cb

Browse files
committed
Changed workspace diagnostics eventlistener implementation to instead use a EventEmitter instance on Workspace
1 parent ee65bb3 commit b3cc4cb

3 files changed

Lines changed: 9 additions & 27 deletions

File tree

server/src/autoit/Script.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,12 @@ export default class Script {
182182
public triggerDiagnostics(): void {
183183
this.debouncedTriggerDiagnostics ??= debounce(() => {
184184
if (this.uri !== undefined) {
185-
this.workspace?.triggerDiagnostics(
186-
this.uri.toString(),
187-
this.getDiagnostics(),
185+
this.workspace?.eventEmitter.emit(
186+
'diagnostics',
187+
{
188+
uri: this.uri.toString(),
189+
diagnostics: this.getDiagnostics()
190+
},
188191
);
189192
}
190193
}, 100);

server/src/autoit/Workspace.ts

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@ import { URI, Utils } from 'vscode-uri';
44
import Script from './Script';
55
import native from './native.au3?raw';
66
import { isAbsolutePath } from './Path';
7+
import EventEmitter from '@utils/EventEmitter';
78

89
/** The key is the script URI */
910
export type ScriptList = Map<string, Script>;
1011

1112
type uri = string | URI | { toString: () => string };
1213

13-
export type diagnosticsListner = (
14-
uri: string, diagnostics: Diagnostic[]) => void;
15-
1614
export type IncludeResolve = { uri: URI, text: string | null };
1715

1816
export type IncludePromise = Promise<IncludeResolve | null>;
@@ -35,8 +33,8 @@ export class Workspace {
3533
protected scripts: ScriptList = new Map();
3634
protected resolvingIncludes = new Map<string, IncludePromise>();
3735
protected connection: Connection | null;
38-
protected diagnosticsListners: diagnosticsListner[] = [];
3936
protected configuration: AutoIt3Configuration | null = null;
37+
public readonly eventEmitter: EventEmitter<{diagnostics: {uri: string, diagnostics: Diagnostic[]}}> = new EventEmitter();
4038

4139
constructor(connection: Connection | null = null) {
4240
this.connection = connection;
@@ -60,25 +58,6 @@ export class Workspace {
6058
return this.connection;
6159
}
6260

63-
public onDiagnostics(fn: diagnosticsListner): void {
64-
this.diagnosticsListners.push(fn);
65-
}
66-
67-
/**
68-
* function for removing a diagnostics listner
69-
*/
70-
public offDiagnostics(fn: diagnosticsListner): void {
71-
this.diagnosticsListners = this.diagnosticsListners.filter(
72-
(x) => x !== fn,
73-
);
74-
}
75-
76-
public triggerDiagnostics(uri: string, diagnostics: Diagnostic[]): void {
77-
for (const fn of this.diagnosticsListners) {
78-
fn.call(this, uri, diagnostics);
79-
}
80-
}
81-
8261
public add(script: Script): void {
8362
const uri = script.getUri();
8463

server/src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
6868
*/
6969

7070
const workspace = new Workspace(connection);
71-
workspace.onDiagnostics(function (uri, diagnostics) {
71+
workspace.eventEmitter.on('diagnostics', function ({uri, diagnostics}) {
7272
// connection.window.showWarningMessage("onDiagnostics");
7373
connection.sendDiagnostics({
7474
uri,

0 commit comments

Comments
 (0)