From 746940d192aa32cb50cbcb98250e2df29c7ea6f6 Mon Sep 17 00:00:00 2001 From: cosmicshuai Date: Mon, 12 Apr 2021 15:38:59 +0800 Subject: [PATCH 1/4] fix hover lg template display format --- .../language-generation/src/LGServer.ts | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) 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 f860e8a71e..519ae429ab 100644 --- a/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts +++ b/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts @@ -3,7 +3,7 @@ import path from 'path'; import URI from 'vscode-uri'; -import { IConnection, TextDocuments } from 'vscode-languageserver'; +import { IConnection, MarkupKind, TextDocuments } from 'vscode-languageserver'; import formatMessage from 'format-message'; import { Diagnostic, @@ -30,6 +30,7 @@ import isEqual from 'lodash/isEqual'; import { filterTemplateDiagnostics, isValid, lgUtil } from '@bfc/indexers'; import { MemoryResolver, ResolverResource, LgFile } from '@bfc/shared'; import { buildInFunctionsMap } from '@bfc/built-in-functions'; +import { LgTemplate } from '@botframework-composer/types'; import { LgParser } from './lgParser'; import { @@ -341,7 +342,12 @@ export class LGServer { let word = document.getText(wordRange); const matchItem = allTemplates.find((u) => u.name === word); if (matchItem) { - const hoveritem: Hover = { contents: [matchItem.body] }; + const hoveritem: Hover = { + contents: { + kind: MarkupKind.Markdown, + value: this.buildHoverTemplateInfo(matchItem), + }, + }; return Promise.resolve(hoveritem); } if (word.startsWith('builtin.')) { @@ -367,6 +373,18 @@ export class LGServer { return Promise.resolve(null); } + private buildHoverTemplateInfo(template: LgTemplate) { + let templateName = ''; + if (template.parameters.length > 0) { + templateName = `\\# ${template.name}(${template.parameters.join(', ')})`; + } else { + templateName = `\\# ${template.name}`; + } + + const templateBody = template.body.replace(/-/g, '\\-').replace(/\r?\n/g, '\n\n'); + return [templateName, templateBody].join('\n\n'); + } + private getExplicitReturnType(numReturnType: number): string[] { const result: string[] = []; const mapping = [ From 95e70374ff2ed56a8150722c20372439e2e2b6db Mon Sep 17 00:00:00 2001 From: cosmicshuai Date: Tue, 13 Apr 2021 14:22:34 +0800 Subject: [PATCH 2/4] add dependency in package json --- .../language-servers/language-generation/package.json | 1 + .../language-generation/src/LGServer.ts | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Composer/packages/tools/language-servers/language-generation/package.json b/Composer/packages/tools/language-servers/language-generation/package.json index 6fb78349a4..2fdf7383f5 100644 --- a/Composer/packages/tools/language-servers/language-generation/package.json +++ b/Composer/packages/tools/language-servers/language-generation/package.json @@ -17,6 +17,7 @@ "dependencies": { "@bfc/built-in-functions": "*", "@bfc/indexers": "*", + "@botframework-composer/types": "*", "botbuilder-lg": "4.12.0-rc1", "adaptive-expressions": "4.12.0-rc1", "vscode-languageserver": "^5.3.0-next" 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 519ae429ab..60415b7282 100644 --- a/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts +++ b/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts @@ -345,7 +345,7 @@ export class LGServer { const hoveritem: Hover = { contents: { kind: MarkupKind.Markdown, - value: this.buildHoverTemplateInfo(matchItem), + value: `~~~\n${this.buildHoverTemplateInfo(matchItem)}\n~~~`, }, }; return Promise.resolve(hoveritem); @@ -376,13 +376,13 @@ export class LGServer { private buildHoverTemplateInfo(template: LgTemplate) { let templateName = ''; if (template.parameters.length > 0) { - templateName = `\\# ${template.name}(${template.parameters.join(', ')})`; + templateName = `# ${template.name}(${template.parameters.join(', ')})`; } else { - templateName = `\\# ${template.name}`; + templateName = `# ${template.name}`; } - const templateBody = template.body.replace(/-/g, '\\-').replace(/\r?\n/g, '\n\n'); - return [templateName, templateBody].join('\n\n'); + const templateBody = template.body; + return [templateName, templateBody].join('\n'); } private getExplicitReturnType(numReturnType: number): string[] { From b03292753e6daeda7b774cb142914b27b98cf4c7 Mon Sep 17 00:00:00 2001 From: cosmicshuai Date: Thu, 15 Apr 2021 11:08:57 +0800 Subject: [PATCH 3/4] fix test case failed --- .../language-generation/__tests__/LGServer.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Composer/packages/tools/language-servers/language-generation/__tests__/LGServer.test.ts b/Composer/packages/tools/language-servers/language-generation/__tests__/LGServer.test.ts index 3daf75dad6..2b42872929 100644 --- a/Composer/packages/tools/language-servers/language-generation/__tests__/LGServer.test.ts +++ b/Composer/packages/tools/language-servers/language-generation/__tests__/LGServer.test.ts @@ -117,7 +117,7 @@ describe('LG LSP server test', () => { [ (response) => { expect(response.id).toEqual(2); - expect(response.result.contents[0]).toContain('-Good evening'); + expect(response.result.contents.value).toContain('~~~\n# Greeting3\n-Good evening\r\n\n~~~'); }, ] ); From a4d6423442cb30518bb6a3bbdb2001fa9f58139e Mon Sep 17 00:00:00 2001 From: cosmicshuai Date: Thu, 15 Apr 2021 14:33:41 +0800 Subject: [PATCH 4/4] modify test --- .../language-generation/__tests__/LGServer.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Composer/packages/tools/language-servers/language-generation/__tests__/LGServer.test.ts b/Composer/packages/tools/language-servers/language-generation/__tests__/LGServer.test.ts index 2b42872929..6ba38af750 100644 --- a/Composer/packages/tools/language-servers/language-generation/__tests__/LGServer.test.ts +++ b/Composer/packages/tools/language-servers/language-generation/__tests__/LGServer.test.ts @@ -117,7 +117,7 @@ describe('LG LSP server test', () => { [ (response) => { expect(response.id).toEqual(2); - expect(response.result.contents.value).toContain('~~~\n# Greeting3\n-Good evening\r\n\n~~~'); + expect(response.result.contents.value).toContain('-Good evening'); }, ] );