diff --git a/src/classes/registrators/DiagnosticsRegistrator.ts b/src/classes/registrators/DiagnosticsRegistrator.ts index 80ac7887..270c0277 100644 --- a/src/classes/registrators/DiagnosticsRegistrator.ts +++ b/src/classes/registrators/DiagnosticsRegistrator.ts @@ -41,7 +41,7 @@ export class DiagnosticsRegistrator { const changeActiveTextEditor = vscode.window.onDidChangeActiveTextEditor(editor => { const fileName = editor?.document.fileName; if (editor && fileName) { - this.updateDiagnosticCollection(editor.document); + this.updateDiagnosticCollection(editor.document, true); } }); @@ -96,7 +96,7 @@ export class DiagnosticsRegistrator { } } - static updateDiagnosticCollection(document: vscode.TextDocument) { + static updateDiagnosticCollection(document: vscode.TextDocument, refreshCode = false) { const fileName = document.fileName; const parser = ParserPool.getParserForFile(fileName); if (!parser) { @@ -110,16 +110,16 @@ export class DiagnosticsRegistrator { } this._updateXMLDiagnostics(document, xmlDiagnosticCollection); } else if (fileName.endsWith(".js")) { - // const className = parser.fileReader.getClassNameFromPath(fileName); - // if (className) { - // parser.classFactory.setNewCodeForClass(className, document.getText(), bForce); - // } + const className = parser.fileReader.getClassNameFromPath(fileName); + if (className && refreshCode) { + parser.classFactory.setNewCodeForClass(className, document.getText(), true); + } this._updateJSDiagnostics(document, jsDiagnosticCollection); } else if (fileName.endsWith(".ts")) { - // const className = parser.fileReader.getClassNameFromPath(fileName); - // if (className) { - // parser.classFactory.setNewCodeForClass(className, document.getText(), bForce); - // } + const className = parser.fileReader.getClassNameFromPath(fileName); + if (className && refreshCode) { + parser.classFactory.setNewCodeForClass(className, document.getText(), true); + } this._updateTSDiagnostics(document, tsDiagnosticCollection); } else if (fileName.endsWith(".properties")) { this._updatePropertiesDiagnostics(document, propertiesDiagnosticCollection); diff --git a/src/classes/utils/FileWatcherMediator.ts b/src/classes/utils/FileWatcherMediator.ts index c5748f26..54d491ef 100644 --- a/src/classes/utils/FileWatcherMediator.ts +++ b/src/classes/utils/FileWatcherMediator.ts @@ -66,7 +66,10 @@ export class FileWatcherMediator { const currentClassNameDotNotation = parser.fileReader.getClassNameFromPath(document.fileName); if (currentClassNameDotNotation) { const UIClass = parser.classFactory.getUIClass(currentClassNameDotNotation) as AbstractCustomClass; - const textChanged = force || UIClass.classText !== document.getText(); + const textChanged = + force || + UIClass.classText.length !== document.getText().length || + UIClass.classText !== document.getText(); if (FileWatcherMediator._parsingTimeout[document.fileName]) { clearTimeout(FileWatcherMediator._parsingTimeout[document.fileName]); } @@ -106,12 +109,20 @@ export class FileWatcherMediator { } else if (document.fileName.endsWith(".view.xml")) { const viewContent = document.getText(); parser.fileReader.setNewViewContentToCache(viewContent, toNative(document.uri.fsPath), true); + + EventBus.fireCodeUpdated(document); } else if (document.fileName.endsWith(".fragment.xml")) { parser.fileReader.setNewFragmentContentToCache(document.getText(), toNative(document.fileName), true); + + EventBus.fireCodeUpdated(document); } else if (document.fileName.endsWith("18n.properties")) { parser.resourceModelData.updateCache(new TextDocumentAdapter(document)); + + EventBus.fireCodeUpdated(document); } else if (document.fileName.endsWith("manifest.json")) { parser.fileReader.rereadAllManifests(); + + EventBus.fireCodeUpdated(document); } this._updateDiagnosticsIfNecessary(document);