Use emmet.includeLanguages to enable emmet abbr in non supported languages #29678

This commit is contained in:
Ramya Achutha Rao
2017-06-27 19:23:46 -07:00
parent 04a1b72c53
commit b69887c107
5 changed files with 52 additions and 11 deletions

View File

@@ -46,18 +46,37 @@ export function getSyntax(document: vscode.TextDocument): string {
return document.languageId;
}
export function getMappedModes(): any {
export function getIncludedModes(): any {
let finalMappedModes = {};
let syntaxProfileConfig = vscode.workspace.getConfiguration('emmet')['syntaxProfiles'];
let syntaxProfiles = Object.assign({}, MAPPED_MODES, syntaxProfileConfig ? syntaxProfileConfig : {});
Object.keys(syntaxProfiles).forEach(syntax => {
if (typeof syntaxProfiles[syntax] === 'string' && LANGUAGE_MODES[syntaxProfiles[syntax]]) {
finalMappedModes[syntax] = syntaxProfiles[syntax];
let includeLanguagesConfig = vscode.workspace.getConfiguration('emmet')['includeLanguages'];
let includeLanguages = Object.assign({}, MAPPED_MODES, includeLanguagesConfig ? includeLanguagesConfig : {});
Object.keys(includeLanguages).forEach(syntax => {
if (typeof includeLanguages[syntax] === 'string' && LANGUAGE_MODES[includeLanguages[syntax]]) {
finalMappedModes[syntax] = includeLanguages[syntax];
}
});
return finalMappedModes;
}
export function getMappedSyntax(syntax: string): string {
if (!syntax) {
return;
}
if (/\b(typescriptreact|javascriptreact|jsx-tags)\b/.test(syntax)) { // treat tsx like jsx
return 'jsx';
}
if (syntax === 'sass-indented') { // map sass-indented to sass
return 'sass';
}
if (syntax === 'jade') {
return 'pug';
}
if (Object.keys(LANGUAGE_MODES).indexOf(syntax) > -1) {
return syntax;
}
return getIncludedModes()[syntax];
}
export function getExcludedModes(): string[] {
let excludedConfig = vscode.workspace.getConfiguration('emmet')['excludeLanguages'];
return Array.isArray(excludedConfig) ? excludedConfig : [];