diff --git a/package-lock.json b/package-lock.json index da3a02fa37b..2dc9df576b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "vscode-nls-dev": "^4.0.4" }, "devDependencies": { - "@aws-toolkits/telemetry": "^1.0.321", + "@aws-toolkits/telemetry": "^1.0.322", "@playwright/browser-chromium": "^1.43.1", "@stylistic/eslint-plugin": "^2.11.0", "@types/he": "^1.2.3", @@ -10760,12 +10760,11 @@ } }, "node_modules/@aws-toolkits/telemetry": { - "version": "1.0.321", - "resolved": "https://registry.npmjs.org/@aws-toolkits/telemetry/-/telemetry-1.0.321.tgz", - "integrity": "sha512-pL1TZOyREfEuZjvjhAPyb/6fOaPLlXMft4i1mbHJVs2rnJBKFAsJOl3osmCLKXuqiMT7jhmzOE8dRCkEuLleIw==", + "version": "1.0.322", + "resolved": "https://registry.npmjs.org/@aws-toolkits/telemetry/-/telemetry-1.0.322.tgz", + "integrity": "sha512-KtLabV3ycRH31EAZ0xoWrdpIBG3ym8CQAqgkHd9DSefndbepPRa07atfXw73Ok9J5aA81VHCFpx1dwrLg39EcQ==", "dev": true, "license": "Apache-2.0", - "license": "Apache-2.0", "dependencies": { "ajv": "^6.12.6", "cross-spawn": "^7.0.6", diff --git a/package.json b/package.json index f523a29bbff..525655b8c35 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "skippedTestReport": "ts-node ./scripts/skippedTestReport.ts ./packages/amazonq/test/e2e/" }, "devDependencies": { - "@aws-toolkits/telemetry": "^1.0.321", + "@aws-toolkits/telemetry": "^1.0.322", "@playwright/browser-chromium": "^1.43.1", "@stylistic/eslint-plugin": "^2.11.0", "@types/he": "^1.2.3", diff --git a/packages/amazonq/.changes/next-release/Feature-31d91f84-30cb-4acd-9e39-9dc153edf0a6.json b/packages/amazonq/.changes/next-release/Feature-31d91f84-30cb-4acd-9e39-9dc153edf0a6.json new file mode 100644 index 00000000000..da0d200410d --- /dev/null +++ b/packages/amazonq/.changes/next-release/Feature-31d91f84-30cb-4acd-9e39-9dc153edf0a6.json @@ -0,0 +1,4 @@ +{ + "type": "Feature", + "description": "Add inline completion support for abap language" +} diff --git a/packages/amazonq/test/unit/codewhisperer/util/runtimeLanguageContext.test.ts b/packages/amazonq/test/unit/codewhisperer/util/runtimeLanguageContext.test.ts index a5cc430a5a9..9d2dbf7954d 100644 --- a/packages/amazonq/test/unit/codewhisperer/util/runtimeLanguageContext.test.ts +++ b/packages/amazonq/test/unit/codewhisperer/util/runtimeLanguageContext.test.ts @@ -177,7 +177,6 @@ describe('runtimeLanguageContext', function () { 'jsx', 'kotlin', 'php', - 'plaintext', 'python', 'ruby', 'rust', @@ -288,7 +287,6 @@ describe('runtimeLanguageContext', function () { ['jsx', 'jsx'], ['kotlin', 'kt'], ['php', 'php'], - ['plaintext', 'txt'], ['python', 'py'], ['ruby', 'rb'], ['rust', 'rs'], diff --git a/packages/core/src/codewhisperer/util/editorContext.ts b/packages/core/src/codewhisperer/util/editorContext.ts index a3f787af6c6..756d9fb2a00 100644 --- a/packages/core/src/codewhisperer/util/editorContext.ts +++ b/packages/core/src/codewhisperer/util/editorContext.ts @@ -151,8 +151,7 @@ export function extractContextForCodeWhisperer(editor: vscode.TextEditor): codew ) let languageName = 'plaintext' if (!checkLeftContextKeywordsForJson(document.fileName, caretLeftFileContext, editor.document.languageId)) { - languageName = - runtimeLanguageContext.normalizeLanguage(editor.document.languageId) ?? editor.document.languageId + languageName = runtimeLanguageContext.resolveLang(editor.document) } if (editor.document.uri.scheme === 'vscode-notebook-cell') { const notebook = getEnclosingNotebook(editor) diff --git a/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts b/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts index 3a1403b453e..e1d4802b6f1 100644 --- a/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts +++ b/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts @@ -67,7 +67,7 @@ export class RuntimeLanguageContext { constructor() { this.supportedLanguageMap = createConstantMap< - CodeWhispererConstants.PlatformLanguageId | CodewhispererLanguage, + Exclude, CodewhispererLanguage >({ c: 'c', @@ -85,7 +85,6 @@ export class RuntimeLanguageContext { jsx: 'jsx', kotlin: 'kotlin', packer: 'tf', - plaintext: 'plaintext', php: 'php', python: 'python', ruby: 'ruby', @@ -112,6 +111,7 @@ export class RuntimeLanguageContext { systemverilog: 'systemVerilog', verilog: 'systemVerilog', vue: 'vue', + abap: 'abap', }) this.supportedLanguageExtensionMap = createConstantMap({ c: 'c', @@ -152,6 +152,8 @@ export class RuntimeLanguageContext { ps1: 'powershell', psm1: 'powershell', r: 'r', + abap: 'abap', + acds: 'abap', }) this.languageSingleLineCommentPrefixMap = createConstantMap({ c: '// ', @@ -185,9 +187,14 @@ export class RuntimeLanguageContext { vue: '', // vue lacks a single-line comment prefix yaml: '# ', yml: '# ', + abap: '', }) } + public resolveLang(doc: vscode.TextDocument): CodewhispererLanguage { + return this.normalizeLanguage(doc.languageId) || this.byFileExt(doc) || 'plaintext' + } + /** * To add a new platform language id: * 1. add new platform language ID constant in the file codewhisperer/constant.ts @@ -317,8 +324,7 @@ export class RuntimeLanguageContext { } else { const normalizedLanguageId = this.normalizeLanguage(arg.languageId) const byLanguageId = !normalizedLanguageId || normalizedLanguageId === 'plaintext' ? false : true - const extension = path.extname(arg.uri.fsPath) - const byFileExtension = this.isFileFormatSupported(extension.substring(1)) + const byFileExtension = this.byFileExt(arg) !== undefined return byLanguageId || byFileExtension } @@ -341,6 +347,17 @@ export class RuntimeLanguageContext { public getLanguageFromFileExtension(fileExtension: string) { return this.supportedLanguageExtensionMap.get(fileExtension) } + + private byFileExt(doc: vscode.TextDocument): CodewhispererLanguage | undefined { + const extension = path.extname(doc.uri.fsPath) + const byExt = this.supportedLanguageExtensionMap.get(extension.substring(1)) + + if (byExt === 'plaintext') { + return undefined + } + + return byExt + } } export const runtimeLanguageContext = new RuntimeLanguageContext()