From 2d527226ce1eca5bfe9aff256a471eebb903706b Mon Sep 17 00:00:00 2001 From: zhixzhan Date: Thu, 28 Nov 2019 16:32:29 +0800 Subject: [PATCH] control initial diagnostics send --- .../packages/lib/code-editor/src/LgEditor.tsx | 2 +- .../language-generation/src/LGServer.ts | 19 ++++++++++++------- .../language-generation/src/utils.ts | 5 +++-- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Composer/packages/lib/code-editor/src/LgEditor.tsx b/Composer/packages/lib/code-editor/src/LgEditor.tsx index b641567bb6..90dddb26e3 100644 --- a/Composer/packages/lib/code-editor/src/LgEditor.tsx +++ b/Composer/packages/lib/code-editor/src/LgEditor.tsx @@ -51,7 +51,7 @@ declare global { async function initializeDocuments(lgOption) { const languageClient = window.monacoLGEditorInstance; - if (languageClient && lgOption && lgOption.inline) { + if (languageClient) { await languageClient.onReady(); languageClient.sendRequest('initializeDocuments', lgOption); } diff --git a/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts b/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts index 8a75f8b99c..8ac774919f 100644 --- a/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts +++ b/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts @@ -75,14 +75,12 @@ export class LGServer { this.connection.onRequest((method, params) => { if (InitializeDocumentsMethodName === method) { - const { uri, content, template } = params; - this.LGDocuments.push({ uri, content, template }); + const { uri, inline = false, content, template } = params; + this.LGDocuments.push({ uri, inline, content, template }); // run diagnostic const textDocument = this.documents.get(uri); if (textDocument) { - setTimeout(() => { - this.validate(textDocument); - }, 500); + this.validate(textDocument); } } }); @@ -98,8 +96,9 @@ export class LGServer { protected getLGDocumentContent(document: TextDocument): string { const LGDocument = this.LGDocuments.find(item => item.uri === document.uri); const text = document.getText(); - if (LGDocument) { + if (LGDocument && LGDocument.inline) { const { content, template } = LGDocument; + if (!content || !template) return text; const updatedTemplate = { Name: template.Name, Parameters: template.Parameters, @@ -313,9 +312,15 @@ export class LGServer { let lineOffset = 0; const LGDocument = this.getLGDocument(document); + // uninitialized + if (!LGDocument) { + return; + } + // if inline editor, concat new content for validate - if (LGDocument) { + if (LGDocument.inline) { const { content, template } = LGDocument; + if (!content || !template) return; const updatedTemplate = { Name: template.Name, Parameters: template.Parameters, diff --git a/Composer/packages/tools/language-servers/language-generation/src/utils.ts b/Composer/packages/tools/language-servers/language-generation/src/utils.ts index 648b08af6c..a91b749049 100644 --- a/Composer/packages/tools/language-servers/language-generation/src/utils.ts +++ b/Composer/packages/tools/language-servers/language-generation/src/utils.ts @@ -22,8 +22,9 @@ export interface Template { export interface LGDocument { uri: string; - content: string; - template: Template; + inline: boolean; + content?: string; + template?: Template; } export function getRangeAtPosition(document: TextDocument, position: Position): Range | undefined {