@@ -158,10 +158,25 @@ export class RuntimeLanguageContext {
158
158
}
159
159
160
160
/**
161
- * @param languageId : vscode language id or codewhisperer language name
161
+ * @param languageId : vscode language id or codewhisperer language name, fileExtension: extension of the selected file
162
162
* @returns An object with a field language: CodewhispererLanguage, if no corresponding CodewhispererLanguage ID, plaintext is returned
163
163
*/
164
- public getLanguageContext ( languageId ?: string ) : { language : CodewhispererLanguage } {
164
+ public getLanguageContext ( languageId ?: string , fileExtension ?: string ) : { language : CodewhispererLanguage } {
165
+ const extensionToLanguageMap : Record < string , CodewhispererLanguage > = {
166
+ tf : 'tf' ,
167
+ hcl : 'tf' ,
168
+ json : 'json' ,
169
+ yaml : 'yaml' ,
170
+ yml : 'yaml' ,
171
+ // Add more mappings if needed
172
+ }
173
+
174
+ if ( languageId === 'plaintext' && fileExtension !== undefined ) {
175
+ const languages = extensionToLanguageMap [ fileExtension ]
176
+ if ( languages ) {
177
+ return { language : languages }
178
+ }
179
+ }
165
180
return { language : this . normalizeLanguage ( languageId ) ?? 'plaintext' }
166
181
}
167
182
@@ -177,7 +192,10 @@ export class RuntimeLanguageContext {
177
192
const fileContext = request . fileContext
178
193
const runtimeLanguage : codewhispererClient . ProgrammingLanguage = {
179
194
languageName : this . toRuntimeLanguage (
180
- request . fileContext . programmingLanguage . languageName as CodewhispererLanguage
195
+ runtimeLanguageContext . getLanguageContext (
196
+ request . fileContext . programmingLanguage . languageName ,
197
+ request . fileContext . filename . substring ( request . fileContext . filename . lastIndexOf ( '.' ) + 1 )
198
+ ) . language
181
199
) ,
182
200
}
183
201
@@ -193,12 +211,21 @@ export class RuntimeLanguageContext {
193
211
/**
194
212
*
195
213
* @param languageId: either vscodeLanguageId or CodewhispererLanguage
196
- * @returns ture if the language is supported by CodeWhisperer otherwise false
214
+ * @returns true if the language is supported by CodeWhisperer otherwise false
197
215
*/
198
216
public isLanguageSupported ( languageId : string ) : boolean {
199
217
const lang = this . normalizeLanguage ( languageId )
200
218
return lang !== undefined && this . normalizeLanguage ( languageId ) !== 'plaintext'
201
219
}
220
+ /**
221
+ *
222
+ * @param fileFormat : vscode editor filecontext filename extension
223
+ * @returns true if the fileformat is supported by CodeWhisperer otherwise false
224
+ */
225
+ public isFileFormatSupported ( fileFormat : string ) : boolean {
226
+ const fileformat = this . supportedLanguageExtensionMap . get ( fileFormat )
227
+ return fileformat !== undefined && this . supportedLanguageExtensionMap . get ( fileformat ) !== 'txt'
228
+ }
202
229
}
203
230
204
231
export const runtimeLanguageContext = new RuntimeLanguageContext ( )
0 commit comments