提交 ae5a6f02 编写于 作者: J Joao Moreno

extension editor: snippets

上级 4a44d5f6
...@@ -294,7 +294,8 @@ export class ExtensionEditor extends BaseEditor { ...@@ -294,7 +294,8 @@ export class ExtensionEditor extends BaseEditor {
} }
private static renderSettings(container: HTMLElement, manifest: IExtensionManifest): void { private static renderSettings(container: HTMLElement, manifest: IExtensionManifest): void {
const configuration = manifest.contributes.configuration; const contributes = manifest.contributes;
const configuration = contributes && contributes.configuration;
const properties = configuration && configuration.properties; const properties = configuration && configuration.properties;
const contrib = properties ? Object.keys(properties) : []; const contrib = properties ? Object.keys(properties) : [];
...@@ -312,7 +313,8 @@ export class ExtensionEditor extends BaseEditor { ...@@ -312,7 +313,8 @@ export class ExtensionEditor extends BaseEditor {
} }
private static renderDebuggers(container: HTMLElement, manifest: IExtensionManifest): void { private static renderDebuggers(container: HTMLElement, manifest: IExtensionManifest): void {
const contrib = manifest.contributes.debuggers || []; const contributes = manifest.contributes;
const contrib = contributes && contributes.debuggers || [];
if (!contrib.length) { if (!contrib.length) {
return; return;
...@@ -328,7 +330,8 @@ export class ExtensionEditor extends BaseEditor { ...@@ -328,7 +330,8 @@ export class ExtensionEditor extends BaseEditor {
} }
private static renderThemes(container: HTMLElement, manifest: IExtensionManifest): void { private static renderThemes(container: HTMLElement, manifest: IExtensionManifest): void {
const contrib = manifest.contributes.themes || []; const contributes = manifest.contributes;
const contrib = contributes && contributes.themes || [];
if (!contrib.length) { if (!contrib.length) {
return; return;
...@@ -343,7 +346,8 @@ export class ExtensionEditor extends BaseEditor { ...@@ -343,7 +346,8 @@ export class ExtensionEditor extends BaseEditor {
} }
private static renderJSONValidation(container: HTMLElement, manifest: IExtensionManifest): void { private static renderJSONValidation(container: HTMLElement, manifest: IExtensionManifest): void {
const contrib = manifest.contributes.jsonValidation || []; const contributes = manifest.contributes;
const contrib = contributes && contributes.jsonValidation || [];
if (!contrib.length) { if (!contrib.length) {
return; return;
...@@ -358,7 +362,8 @@ export class ExtensionEditor extends BaseEditor { ...@@ -358,7 +362,8 @@ export class ExtensionEditor extends BaseEditor {
} }
private renderCommands(container: HTMLElement, manifest: IExtensionManifest): void { private renderCommands(container: HTMLElement, manifest: IExtensionManifest): void {
const rawCommands = manifest.contributes.commands || []; const contributes = manifest.contributes;
const rawCommands = contributes && contributes.commands || [];
const commands = rawCommands.map(c => ({ const commands = rawCommands.map(c => ({
id: c.command, id: c.command,
title: c.title, title: c.title,
...@@ -368,7 +373,7 @@ export class ExtensionEditor extends BaseEditor { ...@@ -368,7 +373,7 @@ export class ExtensionEditor extends BaseEditor {
const byId = arrays.index(commands, c => c.id); const byId = arrays.index(commands, c => c.id);
const menus = manifest.contributes.menus || {}; const menus = contributes && contributes.menus || {};
Object.keys(menus).forEach(context => { Object.keys(menus).forEach(context => {
menus[context].forEach(menu => { menus[context].forEach(menu => {
...@@ -384,7 +389,7 @@ export class ExtensionEditor extends BaseEditor { ...@@ -384,7 +389,7 @@ export class ExtensionEditor extends BaseEditor {
}); });
}); });
const rawKeybindings = manifest.contributes.keybindings || []; const rawKeybindings = contributes && contributes.keybindings || [];
rawKeybindings.forEach(rawKeybinding => { rawKeybindings.forEach(rawKeybinding => {
const keyLabel = this.keybindingToLabel(rawKeybinding); const keyLabel = this.keybindingToLabel(rawKeybinding);
...@@ -423,23 +428,25 @@ export class ExtensionEditor extends BaseEditor { ...@@ -423,23 +428,25 @@ export class ExtensionEditor extends BaseEditor {
} }
private static renderLanguages(container: HTMLElement, manifest: IExtensionManifest): void { private static renderLanguages(container: HTMLElement, manifest: IExtensionManifest): void {
const rawLanguages = manifest.contributes.languages || []; const contributes = manifest.contributes;
const rawLanguages = contributes && contributes.languages || [];
const languages = rawLanguages.map(l => ({ const languages = rawLanguages.map(l => ({
id: l.id, id: l.id,
name: (l.aliases || [])[0] || l.id, name: (l.aliases || [])[0] || l.id,
extensions: l.extensions, extensions: l.extensions || [],
hasGrammar: false hasGrammar: false,
hasSnippets: false
})); }));
const byId = arrays.index(languages, l => l.id); const byId = arrays.index(languages, l => l.id);
const grammars = manifest.contributes.grammars || []; const grammars = contributes && contributes.grammars || [];
grammars.forEach(grammar => { grammars.forEach(grammar => {
let language = byId[grammar.language]; let language = byId[grammar.language];
if (!language) { if (!language) {
language = { id: grammar.language, name: grammar.language, extensions: [], hasGrammar: true }; language = { id: grammar.language, name: grammar.language, extensions: [], hasGrammar: true, hasSnippets: false };
byId[language.id] = language; byId[language.id] = language;
languages.push(language); languages.push(language);
} else { } else {
...@@ -447,6 +454,20 @@ export class ExtensionEditor extends BaseEditor { ...@@ -447,6 +454,20 @@ export class ExtensionEditor extends BaseEditor {
} }
}); });
const snippets = contributes && contributes.snippets || [];
snippets.forEach(snippet => {
let language = byId[snippet.language];
if (!language) {
language = { id: snippet.language, name: snippet.language, extensions: [], hasGrammar: false, hasSnippets: true };
byId[language.id] = language;
languages.push(language);
} else {
language.hasSnippets = true;
}
});
if (!languages.length) { if (!languages.length) {
return; return;
} }
...@@ -457,12 +478,14 @@ export class ExtensionEditor extends BaseEditor { ...@@ -457,12 +478,14 @@ export class ExtensionEditor extends BaseEditor {
$('tr', null, $('tr', null,
$('th', null, localize('command name', "Name")), $('th', null, localize('command name', "Name")),
$('th', null, localize('file extensions', "File Extensions")), $('th', null, localize('file extensions', "File Extensions")),
$('th', null, localize('grammar', "Grammar")) $('th', null, localize('grammar', "Grammar")),
$('th', null, localize('snippets', "Snippets"))
), ),
...languages.map(l => $('tr', null, ...languages.map(l => $('tr', null,
$('td', null, l.name), $('td', null, l.name),
$('td', null, ...join(l.extensions.map(ext => $('code', null, ext)), ' ')), $('td', null, ...join(l.extensions.map(ext => $('code', null, ext)), ' ')),
$('td', null, document.createTextNode(l.hasGrammar ? '✔︎' : '')) $('td', null, document.createTextNode(l.hasGrammar ? '✔︎' : '')),
$('td', null, document.createTextNode(l.hasSnippets ? '✔︎' : ''))
)) ))
) )
)); ));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册