Merge branch 'refactor-icon-build-system' into develop

This commit is contained in:
equinusocio 2017-11-01 21:08:23 +01:00
commit bc46a1aef3
29 changed files with 1174 additions and 1757 deletions

View file

@ -1,4 +1,10 @@
export interface IIcon {
/**
* Icon filename
* @type {string}
* @memberof IIcon
*/
filename: string;
/**
* If set to true, the icon is marked as last
* @type {boolean}

View file

@ -3,8 +3,9 @@ import { IThemeIconsItem } from "./itheme-icons-item";
export interface IThemeIconsVariants {
iconDefinitions: {
"_folder_dark": IThemeIconsItem;
"_folder_dark-build": IThemeIconsItem;
"_file_folder": IThemeIconsItem;
"_file_folder-build": IThemeIconsItem;
"_folder_dark_build": IThemeIconsItem;
"_folder_light": IThemeIconsItem;
"_folder_light_build": IThemeIconsItem;
"_folder_vscode": IThemeIconsItem;
}
}

View file

@ -9,19 +9,11 @@ import { CHARSET } from "../../extensions/consts/files";
import { IDefaults } from "../../extensions/interfaces/idefaults";
import { IThemeIconsAccents } from "../interfaces/itheme-icons-accents";
import PATHS from '../../extensions/consts/paths'
// import { IPackageJSON } from "../../extensions/interfaces/ipackage.json";
// import { writePackageJSON } from "../helpers/contribute-icon-theme";
import { IThemeIconsItem } from '../interfaces/itheme-icons-item';
import { getAccentableIcons } from '../../extensions/helpers/fs';
const BASE_ICON_THEME_PATH: string = path.join(process.cwd(), PATHS.THEMES, './Material-Theme-Icons.json');
const DEFAULTS: IDefaults = require('../../extensions/defaults.json');
// const PACKAGE_JSON: IPackageJSON = require('../../package.json');
// const PACKAGE_JSON_ICON_THEME: IPackageJSONThemeIcons = {
// id: "material-theme-icons",
// label: "Material Theme Icons",
// path: "./themes/Material-Theme-Icons.json"
// }
/**
* Normalizes icon path
@ -50,13 +42,17 @@ function replaceNameWithAccent(name: string, accentName: string): string {
* @returns {string}
*/
export function replaceSVGColour(filecontent: string, colour: string): string {
return filecontent.replace(new RegExp('.st0\{fill:#([a-zA-Z0-9]{6})\}|path fill="#([a-zA-Z0-9]{6})"'), ($0, $1, $2) => {
return filecontent.replace(new RegExp('.st0\{fill:\s{0,}#([a-zA-Z0-9]{6})|path fill="#([a-zA-Z0-9]{6})"'), ($0, $1, $2) => {
colour = colour.replace('#', '');
if (!$2) {
console.log(`Replacing colour ${ $1 } with ${ colour }`)
return $0.replace($1, colour);
} else {
console.log(`Replacing colour ${ $2 } with ${ colour }`)
return $0.replace($2, colour);
}
});
@ -82,6 +78,8 @@ function writeSVGIcon(fromFile: string, toFile: string, accent: string): void {
let content: string = replaceSVGColour(fileContent, DEFAULTS.accents[accent]);
toFile = normalizeIconPath(toFile);
gutil.log(gutil.colors.gray(`Accented icon ${toFile} created with colour ${ accent } (${ DEFAULTS.accents[accent] })`));
fs.writeFileSync(toFile, content);
}
@ -89,8 +87,6 @@ function writeSVGIcon(fromFile: string, toFile: string, accent: string): void {
export default gulp.task('build:icons.accents', cb => {
let basetheme: IThemeIconsAccents;
// PACKAGE_JSON.contributes.iconThemes = [ PACKAGE_JSON_ICON_THEME ];
try {
basetheme = require(BASE_ICON_THEME_PATH);
@ -99,15 +95,25 @@ export default gulp.task('build:icons.accents', cb => {
let themecopy: IThemeIconsAccents = JSON.parse(JSON.stringify(basetheme));
let themePath: string = path.join(PATHS.THEMES, `./Material-Theme-Icons-${ key }.json`);
// let id: string = `${ PACKAGE_JSON_ICON_THEME.id }-${ key.replace(/\s+/g, '-').toLowerCase() }`;
// let label: string = `${ PACKAGE_JSON_ICON_THEME.label } - ${ key } accent`;
// let themepathJSON: string = `./${ themePath }`;
getAccentableIcons().forEach(accentableIconName => {
gutil.log(gutil.colors.gray(`Preparing ${ accentableIconName } accented icon`));
themecopy.iconDefinitions._folder_open.iconPath = replaceNameWithAccent(basetheme.iconDefinitions._folder_open.iconPath, iconName);
themecopy.iconDefinitions._folder_open_build.iconPath = replaceNameWithAccent(basetheme.iconDefinitions._folder_open_build.iconPath, iconName);
let iconOriginDefinition: IThemeIconsItem = (basetheme.iconDefinitions as any)[accentableIconName];
let iconCopyDefinition: IThemeIconsItem = (themecopy.iconDefinitions as any)[accentableIconName];
writeSVGIcon(basetheme.iconDefinitions._folder_open.iconPath, themecopy.iconDefinitions._folder_open.iconPath, key);
writeSVGIcon(basetheme.iconDefinitions._folder_open_build.iconPath, themecopy.iconDefinitions._folder_open_build.iconPath, key);
if (iconOriginDefinition !== undefined && typeof iconOriginDefinition.iconPath === 'string' && iconCopyDefinition !== undefined && typeof iconCopyDefinition.iconPath === 'string') {
iconCopyDefinition.iconPath = replaceNameWithAccent(iconOriginDefinition.iconPath, iconName);
writeSVGIcon(iconOriginDefinition.iconPath, iconCopyDefinition.iconPath, key);
} else {
gutil.log(gutil.colors.yellow(`Icon ${ accentableIconName } not found`))
}
});
// themecopy.iconDefinitions._folder_open.iconPath = replaceNameWithAccent(basetheme.iconDefinitions._folder_open.iconPath, iconName);
// themecopy.iconDefinitions._folder_open_build.iconPath = replaceNameWithAccent(basetheme.iconDefinitions._folder_open_build.iconPath, iconName);
// writeSVGIcon(basetheme.iconDefinitions._folder_open.iconPath, themecopy.iconDefinitions._folder_open.iconPath, key);
// writeSVGIcon(basetheme.iconDefinitions._folder_open_build.iconPath, themecopy.iconDefinitions._folder_open_build.iconPath, key);
// fs.writeFileSync(themePath, JSON.stringify(themecopy));

View file

@ -36,12 +36,18 @@ export default gulp.task('build:icons.variants', callback => {
let variant = variants[variantName];
theme.iconDefinitions._folder_dark.iconPath = theme.iconDefinitions._folder_dark.iconPath.replace('.svg', `${ variantName }.svg`);
theme.iconDefinitions._file_folder.iconPath = theme.iconDefinitions._file_folder.iconPath.replace('.svg', `${ variantName }.svg`);
theme.iconDefinitions["_file_folder-build"].iconPath = theme.iconDefinitions["_file_folder-build"].iconPath.replace('.svg', `${ variantName }.svg`);
theme.iconDefinitions._folder_dark_build.iconPath = theme.iconDefinitions._folder_dark_build.iconPath.replace('.svg', `${ variantName }.svg`);
theme.iconDefinitions._folder_vscode.iconPath = theme.iconDefinitions._folder_vscode.iconPath.replace('.svg', `${ variantName }.svg`);
// theme.iconDefinitions._file_folder.iconPath = theme.iconDefinitions._file_folder.iconPath.replace('.svg', `${ variantName }.svg`);
// theme.iconDefinitions["_file_folder_build"].iconPath = theme.iconDefinitions["_file_folder_build"].iconPath.replace('.svg', `${ variantName }.svg`);
theme.iconDefinitions._folder_light.iconPath = theme.iconDefinitions._folder_light.iconPath.replace('.svg', `${ variantName }.svg`);
theme.iconDefinitions["_folder_light_build"].iconPath = theme.iconDefinitions["_folder_light_build"].iconPath.replace('.svg', `${ variantName }.svg`);
writeIconVariant(basetheme.iconDefinitions._folder_dark.iconPath, theme.iconDefinitions._folder_dark.iconPath, variant);
writeIconVariant(basetheme.iconDefinitions._file_folder.iconPath, theme.iconDefinitions._file_folder.iconPath, variant);
writeIconVariant(basetheme.iconDefinitions["_file_folder-build"].iconPath, theme.iconDefinitions["_file_folder-build"].iconPath, variant);
writeIconVariant(basetheme.iconDefinitions._folder_dark_build.iconPath, theme.iconDefinitions._folder_dark_build.iconPath, variant);
writeIconVariant(basetheme.iconDefinitions._folder_light.iconPath, theme.iconDefinitions._folder_light.iconPath, variant);
writeIconVariant(basetheme.iconDefinitions._folder_vscode.iconPath, theme.iconDefinitions._folder_vscode.iconPath, variant);
writeIconVariant(basetheme.iconDefinitions["_folder_light_build"].iconPath, theme.iconDefinitions["_folder_light_build"].iconPath, variant);
});
});

View file

@ -10,6 +10,7 @@ import { CHARSET } from "../../extensions/consts/files";
import { IGenericObject } from "../../extensions/interfaces/igeneric-object";
import { IIcon } from './../interfaces/iicon';
import paths from '../../extensions/consts/paths';
import { ensureDir } from '../../extensions/helpers/fs';
/**
* Returns an object implementing the IIcon interface
@ -17,10 +18,24 @@ import paths from '../../extensions/consts/paths';
* @returns {IIcon}
*/
function iconFactory(fileName: string): IIcon {
gutil.log(gutil.colors.gray(`Processing icon ${ fileName }`))
let name: string = path.basename(fileName, path.extname(fileName));
let filename: string = name;
let last: boolean = false;
return { name, last } as IIcon;
// renaming icon for vscode
// if the icon filename starts with a folder prefix,
// the resulting name will be prefixed only by an underscore,
// otherwise the icon will be prefixed by a _file_ prefix
if (name.indexOf('folder')) {
name = name.indexOf('file') ? `_file_${ name }` : `_${ name }`;
} else {
name = `_${ name }`;
}
gutil.log(gutil.colors.gray(`VSCode icon name ${ name } with filename ${ filename }`));
return { filename, name, last } as IIcon;
}
/**
@ -35,6 +50,8 @@ export default gulp.task('build:icons', cb => {
let partialsData: IGenericObject<any> = {};
let pathTemp: string = './themes/.material-theme-icons.tmp';
ensureDir(path.join(paths.THEMES));
icons[icons.length - 1].last = true;
partials.forEach(partial => {

View file

@ -10,6 +10,7 @@ import { CHARSET } from "../../extensions/consts/files";
import { IDefaults } from "../../extensions/interfaces/idefaults";
import { IThemeVariant } from './../interfaces/itheme-variant';
import paths from '../../extensions/consts/paths';
import { ensureDir } from '../../extensions/helpers/fs';
let commons: IDefaults = require('../../extensions/defaults.json');
@ -34,19 +35,26 @@ fileNames.forEach(fileName => {
* Themes task
* Builds Themes
*/
export default gulp.task('build:themes', () => {
export default gulp.task('build:themes', cb => {
gulpUtil.log(gulpUtil.colors.gray(HR));
themeVariants.forEach(variant => {
let filePath = path.join(paths.THEMES, `./${variant.name}.json`);
let templateData = { commons, variant };
let templateJSON: any = JSON.parse(mustache.render(themeTemplateFileContent, templateData));
let templateJSONStringified: string = JSON.stringify(templateJSON, null, 2);
ensureDir(path.join(paths.THEMES));
fs.writeFileSync(filePath, templateJSONStringified, { encoding: CHARSET });
try {
themeVariants.forEach(variant => {
let filePath = path.join(paths.THEMES, `./${variant.name}.json`);
let templateData = { commons, variant };
let templateJSON: any = JSON.parse(mustache.render(themeTemplateFileContent, templateData));
let templateJSONStringified: string = JSON.stringify(templateJSON, null, 2);
gulpUtil.log(MESSAGE_GENERATED, gulpUtil.colors.green(filePath));
});
fs.writeFileSync(filePath, templateJSONStringified, { encoding: CHARSET });
gulpUtil.log(MESSAGE_GENERATED, gulpUtil.colors.green(filePath));
});
} catch (exception) {
gulpUtil.log(exception);
cb(exception);
}
gulpUtil.log(gulpUtil.colors.gray(HR));
});

43
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,43 @@
Contributing guidelines
=======================
> Note: this document is intended as a draft, it will be updated soon
### Requirements:
* Nodejs ^6.x
* Visual Studio Code
### Installing and compiling source
First you will have to install node_modules through npm or yarn
```shell
npm install
# or
yarn install
```
To compile to the source code, you have to execute the build task through visual studio code.
First you need to invoke to quick command (on MacOS `⌘P`, while on Linux/windows is `ctrl+p`)
then type `task build` and wait until vsc will have finished the task.
### Testing the theme
To test the theme, you will have to go to the debug section, select the *Launch Extension* from debug and execute it.
### Adding new Material Theme commands
Soon(ish)®
### Adding new icons
* Add your icon to the `~/src/icons/svgs` directory.
* Add the reference to that icon to the `~/src/icons/partials/fileNames.js` or if your icon is referred to a directory adds the reference to the `~/src/icons/partials/folderNames.js` file, otherwise to `~/src/icons/partials/fileExtensions.js` if is referred to a file extension.
* If you want to make the icon sensitive to be accented, modify the `~/extensions/defaults.json` file, adding the icon definition to the `accentableIcons` array (e.g. ["_folder_open", "_folder_open_build"]) and the path to the `icons.theme.iconDefinitions` object. The same applies to variants (the variant icons array is called "variantsIcons")
* Execute the build command.
* Enjoy your new icons in Material Theme, and don't forget to pull request!

View file

@ -99,11 +99,11 @@ function setWorkbenchOptions(accentSelected: string | undefined, config: any): v
let themeID = getCurrentThemeID()
let themeIconsID = getCurrentThemeIconsID()
updateAccent(accentSelected);
if (isMaterialTheme(themeID) && isMaterialThemeIcons(themeIconsID)) {
THEME_ICONS().then(() => reloadWindow());
}
updateAccent(accentSelected).then(() => {
if (isMaterialTheme(themeID) && isMaterialThemeIcons(themeIconsID)) {
THEME_ICONS().then(() => reloadWindow());
}
});
}, reason => {
vscode.window.showErrorMessage(reason);
});

View file

@ -1,12 +1,28 @@
import {getAccentableIcons} from '../../helpers/fs';
import * as fs from 'fs';
import { getAbsolutePath, getDefaultValues, getThemeIconsByContributeID, getThemeIconsContribute } from "../../helpers/fs";
import { getAbsolutePath, getDefaultValues, getThemeIconsByContributeID, getThemeIconsContribute, getVariantIcons } from "../../helpers/fs";
import { getCurrentThemeIconsID } from "../../helpers/vscode";
import { getCustomSettings, isAccent, isMaterialThemeIcons } from "../../helpers/settings";
import { CHARSET } from "../../consts/files";
import { IPackageJSONThemeIcons } from "../../interfaces/ipackage.json";
import { IThemeIcons } from "../../interfaces/itheme-icons";
import {IThemeIconsIconPath, IThemeIcons} from '../../interfaces/itheme-icons';
function getIconDefinition(definitions: any, iconname: string): IThemeIconsIconPath {
return (definitions as any)[iconname];
}
/**
* Replaces icon path with the accented one.
* @param {string} iconPath
* @param {string} accentName
* @returns {string}
*/
function replaceIconPathWithAccent(iconPath: string, accentName: string): string {
return iconPath.replace('.svg', `.accent.${ accentName }.svg`);
}
export const THEME_ICONS = () => {
let deferred: any = {};
@ -27,17 +43,44 @@ export const THEME_ICONS = () => {
if (isAccent(accentName, defaults)) {
let _accentName = accentName.replace(/\s+/, '-');
theme.iconDefinitions._folder_open.iconPath = defaults.icons.theme.iconDefinitions._folder_open.iconPath.replace('.svg', `.accent.${ _accentName }.svg`);
theme.iconDefinitions._folder_open_build.iconPath = defaults.icons.theme.iconDefinitions._folder_open_build.iconPath.replace('.svg', `.accent.${ _accentName }.svg`);
getAccentableIcons().forEach(iconname => {
let distIcon = getIconDefinition(theme.iconDefinitions, iconname);
let outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname);
if (typeof distIcon === 'object' && typeof outIcon === 'object') {
distIcon.iconPath = replaceIconPathWithAccent(outIcon.iconPath, _accentName)
}
})
// theme.iconDefinitions._folder_open.iconPath = defaults.icons.theme.iconDefinitions._folder_open.iconPath.replace('.svg', `.accent.${ _accentName }.svg`);
// theme.iconDefinitions._folder_open_build.iconPath = defaults.icons.theme.iconDefinitions._folder_open_build.iconPath.replace('.svg', `.accent.${ _accentName }.svg`);
} else {
theme.iconDefinitions._folder_open.iconPath = defaults.icons.theme.iconDefinitions._folder_open.iconPath;
theme.iconDefinitions._folder_open_build.iconPath = defaults.icons.theme.iconDefinitions._folder_open_build.iconPath;
getAccentableIcons().forEach(iconname => {
let distIcon = getIconDefinition(theme.iconDefinitions, iconname);
let outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname);
distIcon.iconPath = outIcon.iconPath;
});
// theme.iconDefinitions._folder_open.iconPath = defaults.icons.theme.iconDefinitions._folder_open.iconPath;
// theme.iconDefinitions._folder_open_build.iconPath = defaults.icons.theme.iconDefinitions._folder_open_build.iconPath;
}
theme.iconDefinitions._folder_dark.iconPath = defaults.icons.theme.iconDefinitions._folder_dark.iconPath.replace('.svg', `${ variantName }.svg`);
theme.iconDefinitions._file_folder.iconPath = defaults.icons.theme.iconDefinitions._file_folder.iconPath.replace('.svg', `${ variantName }.svg`);
theme.iconDefinitions._folder_dark_build.iconPath = defaults.icons.theme.iconDefinitions._folder_dark_build.iconPath.replace('.svg', `${ variantName }.svg`);
theme.iconDefinitions["_file_folder-build"].iconPath = defaults.icons.theme.iconDefinitions["_file_folder-build"].iconPath.replace('.svg', `${ variantName }.svg`);
getVariantIcons().forEach(iconname => {
let distIcon = getIconDefinition(theme.iconDefinitions, iconname);
let outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname);
if (!!distIcon && !!outIcon) {
distIcon.iconPath = outIcon.iconPath.replace('.svg', `${ variantName }.svg`);
}
})
// theme.iconDefinitions._folder_dark.iconPath = defaults.icons.theme.iconDefinitions._folder_dark.iconPath.replace('.svg', `${ variantName }.svg`);
// theme.iconDefinitions._folder_dark_build.iconPath = defaults.icons.theme.iconDefinitions._folder_dark_build.iconPath.replace('.svg', `${ variantName }.svg`);
// theme.iconDefinitions._folder_light.iconPath = defaults.icons.theme.iconDefinitions._folder_light.iconPath.replace('.svg', `${ variantName }.svg`);
// theme.iconDefinitions["_folder_light_build"].iconPath = defaults.icons.theme.iconDefinitions["_folder_light_build"].iconPath.replace('.svg', `${ variantName }.svg`);
fs.writeFile(themepath, JSON.stringify(theme), { encoding: CHARSET }, (error) => {
if (error) {

View file

@ -17,29 +17,46 @@
"Teal": "#80CBC4",
"Yellow": "#FFA000"
},
"accentableIcons": [
"_folder_open",
"_folder_open_build",
"_folder_vscode_open"
],
"changelog": {
"lastversion": "1.0.5"
},
"icons": {
"theme": {
"iconDefinitions": {
"_folder_dark": {
"iconPath": "../icons/folder.svg"
"_folder_vscode": {
"iconPath": "../icons/folder_vscode.svg"
},
"_file_folder": {
"iconPath": "../icons/folder.svg"
"_folder_vscode_open": {
"iconPath": "../icons/folder_vscode_open.svg"
},
"_folder_dark": {
"iconPath": "../icons/folder_dark.svg"
},
"_folder_dark_build": {
"iconPath": "../icons/folder-build.svg"
"iconPath": "../icons/folder_dark_build.svg"
},
"_file_folder-build": {
"iconPath": "../icons/folder-build.svg"
"_folder_light": {
"iconPath": "../icons/folder_light.svg"
},
"_folder_light_build": {
"iconPath": "../icons/folder_light_build.svg"
},
"_file_folder": {
"iconPath": "../icons/file_folder.svg"
},
"_file_folder_build": {
"iconPath": "../icons/file_folder_build.svg"
},
"_folder_open": {
"iconPath": "../icons/folder-outline.svg"
"iconPath": "../icons/folder_open.svg"
},
"_folder_open_build": {
"iconPath": "../icons/folder-outline-build.svg"
"iconPath": "../icons/folder_open_build.svg"
}
}
}
@ -73,5 +90,12 @@
"Light High Contrast": "vs",
"Palenight": "vs-dark",
"Palenight High Contrast": "vs-dark"
}
},
"variantsIcons": [
"_folder_dark_build",
"_folder_dark",
"_folder_light_build",
"_folder_light",
"_folder_vscode"
]
}

View file

@ -8,6 +8,16 @@ import { IDefaults } from "../interfaces/idefaults";
import { IThemeIcons } from "../interfaces/itheme-icons";
import { PATHS } from "../consts/paths";
/**
* @export
* @param {string} dirname
*/
export function ensureDir(dirname: string): void {
if (!fs.existsSync(dirname)) {
fs.mkdirSync(dirname);
}
}
/**
* Gets default value
* @export
@ -34,6 +44,22 @@ export function getAbsolutePath(input: string): string {
return path.join(PATHS.VSIX_DIR, input);
}
/**
* @export
* @returns {string[]}
*/
export function getAccentableIcons(): string[] {
return getDefaultValues().accentableIcons;
}
/**
* @export
* @returns {string[]}
*/
export function getVariantIcons(): string[] {
return getDefaultValues().variantsIcons;
}
/**
* Gets a theme content by a given contribute ID
*

View file

@ -2,7 +2,7 @@ import * as vscode from 'vscode';
import { IDefaults } from "../interfaces/idefaults";
import { IThemeCustomProperties } from "../interfaces/itheme-custom-properties";
import { getPackageJSON } from "./fs";
import {getPackageJSON} from './fs';
/**
* Gets saved accent

View file

@ -1,10 +1,12 @@
export interface IDefaults {
accents: IAccents;
accentableIcons: string[];
changelog: IChangelog;
icons: IDefaultsThemeIcons;
themeVariants: IDefaultsThemeVariant;
themeVariantsColours: IDefaultsThemeVariantColours;
themeVariantsUITheme: IDefaultsThemeVariantUITheme;
variantsIcons: string[];
}
export interface IAccents {
@ -31,10 +33,10 @@ export interface IDefaultsThemeIcons {
_folder_dark_build: {
iconPath: string;
}
"_file_folder-build": {
"_folder_light_build": {
iconPath: string;
}
_file_folder: {
_folder_light: {
iconPath: string;
}
}

View file

@ -6,6 +6,7 @@ export interface IThemeIcons {
"iconDefinitions":
{
"_folder_dark": IThemeIconsIconPath;
"_file_folder": IThemeIconsIconPath;
"_folder_dark_build": IThemeIconsIconPath;
"_folder_light": IThemeIconsIconPath;
"_folder_light_build": IThemeIconsIconPath;
@ -51,7 +52,6 @@ export interface IThemeIcons {
"_file_folder-light": IThemeIconsIconPath;
"_file_folder-outline-build": IThemeIconsIconPath;
"_file_folder-outline": IThemeIconsIconPath;
"_file_folder": IThemeIconsIconPath;
"_file_font": IThemeIconsIconPath;
"_file_fsharp": IThemeIconsIconPath;
"_file_git": IThemeIconsIconPath;

2314
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,129 +1,129 @@
{
"name": "vsc-material-theme",
"displayName": "Material Theme",
"description": "The most epic theme now for Visual Studio Code",
"version": "1.0.5",
"publisher": "Equinusocio",
"license": "Apache-2.0",
"icon": "logo.png",
"galleryBanner": {
"color": "#263238",
"theme": "dark"
},
"homepage": "https://github.com/equinusocio/vsc-material-theme",
"repository": {
"type": "git",
"url": "https://github.com/equinusocio/vsc-material-theme.git"
},
"bugs": {
"url": "https://github.com/equinusocio/vsc-material-theme/issues"
},
"engines": {
"vscode": "^1.17.0"
},
"scripts": {
"build": "npm run build-icons && npm run build-themes && npm run build-icons-accents && npm run build-icons-variants",
"minimize-icons": "svgo -f src/icons/svgs -o icons",
"minimize-json": "json-minify themes/.material-theme-icons.tmp > themes/Material-Theme-Icons.json && npm run remove-icons-tmp",
"remove-icons": "rimraf icons && rimraf themes/Material-Theme-Icons.json",
"remove-icons-tmp": "rimraf themes/.material-theme-icons.tmp",
"build-icons": "npm run remove-icons && npm run minimize-icons && gulp build:icons && npm run minimize-json",
"build-icons-accents": "gulp build:icons.accents",
"build-icons-variants": "gulp build:icons.variants",
"build-themes": "gulp build:themes",
"release": "npm run bump && npm run changelog",
"postinstall": "node ./node_modules/vscode/bin/install",
"changelog": "gulp changelog",
"bump": "gulp bump"
},
"categories": [
"Themes",
"Other"
],
"activationEvents": [
"*"
],
"main": "./extensions/material.theme.config",
"contributes": {
"commands": [
{
"category": "Material theme",
"command": "material.theme.config",
"title": "Settings"
}
],
"configuration": {
"properties": {
"materialTheme.cache.workbench.accent": {
"type": "string",
"title": "[DEPRECATED] This is an old property.",
"description": "This property is intended only for migrating old settings system to a new one. It will be removed in new versions. Don't use it, use \"materialTheme.cache.workbench.settings\" instead."
},
"materialTheme.cache.workbench.settings": {
"default": {},
"type": "object",
"title": "Custom material theme settings",
"description": "Material theme settings object."
}
}
},
"themes": [
{
"label": "Material Theme",
"path": "./themes/Material-Theme-Default.json",
"uiTheme": "vs-dark"
}
],
"iconThemes": [
{
"id": "eq-material-theme-icons",
"label": "Material Theme Icons",
"path": "./themes/Material-Theme-Icons.json"
}
]
},
"badges": [
{
"url": "https://camo.githubusercontent.com/d3c6e53aa66426dead24cdedab0e83082103bea6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f657175696e75736f63696f2f7673632d6d6174657269616c2d7468656d652e7376673f7374796c653d666c61742d737175617265",
"href": "https://github.com/equinusocio/vsc-material-theme/issues",
"description": "Open issues"
}
],
"devDependencies": {
"@types/chalk": "0.4.31",
"@types/gulp": "4.0.4",
"@types/gulp-if": "0.0.31",
"@types/gulp-util": "3.0.31",
"@types/mustache": "0.8.29",
"@types/run-sequence": "0.0.29",
"@types/through2": "2.0.33",
"@types/yamljs": "0.2.30",
"@types/yargs": "6.6.0",
"babel-core": "6.25.0",
"babel-preset-es2015": "6.24.1",
"babel-root-import": "4.1.8",
"cpx": "1.5.0",
"eslint": "4.1.1",
"eslint-plugin-standard": "3.0.1",
"gulp": "3.9.1",
"gulp-bump": "2.7.0",
"gulp-conventional-changelog": "1.1.3",
"gulp-if": "2.0.2",
"gulp-stats": "0.0.4",
"gulp-util": "3.0.8",
"json-minify": "1.0.0",
"mustache": "2.3.0",
"rimraf": "2.6.1",
"run-sequence": "1.2.2",
"svgo": "0.7.1",
"typescript": "2.4.1",
"vscode": "1.1.1",
"yamljs": "0.3.0",
"yargs": "8.0.2"
},
"__metadata": {
"id": "dffaf5a1-2219-434b-9d87-cb586fd59260",
"publisherDisplayName": "Mattia Astorino",
"publisherId": "e41388a1-a892-4c1e-940b-1e7c1bf43c97"
}
"name": "vsc-material-theme",
"displayName": "Material Theme",
"description": "The most epic theme now for Visual Studio Code",
"version": "1.0.5",
"publisher": "Equinusocio",
"license": "Apache-2.0",
"icon": "logo.png",
"galleryBanner": {
"color": "#263238",
"theme": "dark"
},
"homepage": "https://github.com/equinusocio/vsc-material-theme",
"repository": {
"type": "git",
"url": "https://github.com/equinusocio/vsc-material-theme.git"
},
"bugs": {
"url": "https://github.com/equinusocio/vsc-material-theme/issues"
},
"engines": {
"vscode": "^1.17.0"
},
"scripts": {
"build": "npm run build-icons && npm run build-themes && npm run build-icons-accents && npm run build-icons-variants",
"minimize-icons": "svgo -f src/icons/svgs -o icons",
"minimize-json": "json-minify themes/.material-theme-icons.tmp > themes/Material-Theme-Icons.json && npm run remove-icons-tmp",
"remove-icons": "rimraf icons && rimraf themes/Material-Theme-Icons.json",
"remove-icons-tmp": "rimraf themes/.material-theme-icons.tmp",
"build-icons": "npm run remove-icons && npm run minimize-icons && gulp build:icons && npm run minimize-json",
"build-icons-accents": "gulp build:icons.accents",
"build-icons-variants": "gulp build:icons.variants",
"build-themes": "gulp build:themes",
"release": "npm run bump && npm run changelog",
"postinstall": "node ./node_modules/vscode/bin/install",
"changelog": "gulp changelog",
"bump": "gulp bump"
},
"categories": [
"Themes",
"Other"
],
"activationEvents": [
"*"
],
"main": "./extensions/material.theme.config",
"contributes": {
"commands": [
{
"category": "Material theme",
"command": "material.theme.config",
"title": "Settings"
}
],
"configuration": {
"properties": {
"materialTheme.cache.workbench.accent": {
"type": "string",
"title": "[DEPRECATED] This is an old property.",
"description": "This property is intended only for migrating old settings system to a new one. It will be removed in new versions. Don't use it, use \"materialTheme.cache.workbench.settings\" instead."
},
"materialTheme.cache.workbench.settings": {
"default": {},
"type": "object",
"title": "Custom material theme settings",
"description": "Material theme settings object."
}
}
},
"themes": [
{
"label": "Material Theme",
"path": "./themes/Material-Theme-Darker.json",
"uiTheme": "vs-dark"
}
],
"iconThemes": [
{
"id": "eq-material-theme-icons",
"label": "Material Theme Icons",
"path": "./themes/Material-Theme-Icons.json"
}
]
},
"badges": [
{
"url": "https://camo.githubusercontent.com/d3c6e53aa66426dead24cdedab0e83082103bea6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f657175696e75736f63696f2f7673632d6d6174657269616c2d7468656d652e7376673f7374796c653d666c61742d737175617265",
"href": "https://github.com/equinusocio/vsc-material-theme/issues",
"description": "Open issues"
}
],
"devDependencies": {
"@types/chalk": "0.4.31",
"@types/gulp": "4.0.4",
"@types/gulp-if": "0.0.31",
"@types/gulp-util": "3.0.31",
"@types/mustache": "0.8.29",
"@types/run-sequence": "0.0.29",
"@types/through2": "2.0.33",
"@types/yamljs": "0.2.30",
"@types/yargs": "6.6.0",
"babel-core": "6.25.0",
"babel-preset-es2015": "6.24.1",
"babel-root-import": "4.1.8",
"cpx": "1.5.0",
"eslint": "4.1.1",
"eslint-plugin-standard": "3.0.1",
"gulp": "3.9.1",
"gulp-bump": "2.7.0",
"gulp-conventional-changelog": "1.1.3",
"gulp-if": "2.0.2",
"gulp-stats": "0.0.4",
"gulp-util": "3.0.8",
"json-minify": "1.0.0",
"mustache": "2.3.0",
"rimraf": "2.6.1",
"run-sequence": "1.2.2",
"svgo": "0.7.1",
"typescript": "2.4.1",
"vscode": "1.1.1",
"yamljs": "0.3.0",
"yargs": "8.0.2"
},
"__metadata": {
"id": "dffaf5a1-2219-434b-9d87-cb586fd59260",
"publisherDisplayName": "Mattia Astorino",
"publisherId": "e41388a1-a892-4c1e-940b-1e7c1bf43c97"
}
}

View file

@ -91,14 +91,14 @@
"xlsx": "_file_table",
"xls": "_file_table",
"csv": "_file_table",
"vscodeignore": "_file_vs",
"vsixmanifest": "_file_vs",
"suo": "_file_vs",
"sln": "_file_vs",
"vscodeignore": "_file_visualstudio",
"vsixmanifest": "_file_visualstudio",
"suo": "_file_visualstudio",
"sln": "_file_visualstudio",
"pdb": "_file_database",
"cs": "_file_csharp",
"csx": "_file_csharp",
"csproj": "_file_vs",
"csproj": "_file_visualstudio",
"zip": "_file_zip",
"tar": "_file_zip",
"gz": "_file_zip",
@ -236,7 +236,7 @@
"project": "_file_xml",
"patch": "_file_git",
"dockerfile": "_file_docker",
"vb": "_file_vs",
"vb": "_file_visualstudio",
"lua": "_file_lua",
"clj": "_file_clojure",
"groovy": "_file_groovy",

View file

@ -3,6 +3,7 @@
".git": "_file_git",
".github": "_file_github",
".gulp": "_file_gulp",
".vscode": "_folder_vscode",
"bower_components": "_file_bower",
"build": "_folder_dark_build",
"dist": "_folder_dark_build"
@ -13,6 +14,7 @@
".github": "_file_github",
".gulp": "_file_gulp",
"bower_components": "_file_bower",
".vscode": "_folder_vscode_open",
"build": "_folder_open_build",
"dist": "_folder_open_build"
}

View file

@ -1,28 +1,7 @@
"iconDefinitions": {
"_folder_dark": {
"iconPath": "../icons/folder.svg"
},
"_folder_dark_build": {
"iconPath": "../icons/folder-build.svg"
},
"_folder_light": {
"iconPath": "../icons/folder-light.svg"
},
"_folder_light_build": {
"iconPath": "../icons/folder-light-build.svg"
},
"_folder_open": {
"iconPath": "../icons/folder-outline.svg"
},
"_folder_open_build": {
"iconPath": "../icons/folder-outline-build.svg"
},
"_file_dark": {
"iconPath": "../icons/file.svg"
},
{{#icons}}
"_file_{{name}}": {
"iconPath": "../icons/{{name}}.svg"
"{{name}}": {
"iconPath": "../icons/{{filename}}.svg"
}{{^last}},{{/last}}
{{/icons}}
},

View file

@ -6,6 +6,7 @@
".git": "_file_git",
".github": "_file_github",
".gulp": "_file_gulp",
".vscode": "_folder_vscode",
"bower_components": "_file_bower",
"build": "_folder_light_build",
"dist": "_folder_light_build"
@ -15,8 +16,9 @@
".git": "_file_git",
".github": "_file_github",
".gulp": "_file_gulp",
".vscode": "_folder_vscode_open",
"bower_components": "_file_bower",
"build": "_folder_light_build",
"dist": "_folder_light_build"
"build": "_folder_open_build",
"dist": "_folder_open_build"
}
},

View file

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

Before

Width:  |  Height:  |  Size: 565 B

After

Width:  |  Height:  |  Size: 565 B

View file

Before

Width:  |  Height:  |  Size: 835 B

After

Width:  |  Height:  |  Size: 835 B

View file

Before

Width:  |  Height:  |  Size: 317 B

After

Width:  |  Height:  |  Size: 317 B

View file

Before

Width:  |  Height:  |  Size: 796 B

After

Width:  |  Height:  |  Size: 796 B

View file

Before

Width:  |  Height:  |  Size: 350 B

After

Width:  |  Height:  |  Size: 350 B

View file

Before

Width:  |  Height:  |  Size: 883 B

After

Width:  |  Height:  |  Size: 883 B

View file

@ -1 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.st0{fill:#4a616c;}.st1{fill:#ffe0b2;}</style></defs><title>folder_vscode</title><path class="st0" d="M9.8,3,12,5.2h8.8A2.22,2.22,0,0,1,23,7.4V18.6a2.22,2.22,0,0,1-2.2,2.2H3.2a1.94,1.94,0,0,1-2.2-2V5.2A2.22,2.22,0,0,1,3.2,3Z"/><path class="st1" d="M20.87,9.38l-6.42,5.9-3.59-2.7-1.48.86,3.54,3.25L9.37,19.94l1.48.87,3.59-2.7L20.87,24,24,22.48V10.9Zm0,3.88v6.86l-4.55-3.43Z"/></svg>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.st0{fill:#4a616c;enable-background:new;}.st1{fill:#ffcb6b;}</style></defs><path class="st0" d="M9.8,3,12,5.2h8.8A2.22,2.22,0,0,1,23,7.4V18.6a2.22,2.22,0,0,1-2.2,2.2H3.2a2,2,0,0,1-2.2-2V5.2A2.22,2.22,0,0,1,3.2,3Z"/><path class="st1" d="M21.08,10.36l-6,5.51-3.35-2.53-1.38.81,3.3,3-3.3,3,1.38.81,3.35-2.52,6,5.5L24,22.58V11.78Zm0,3.62v6.4l-4.25-3.2Z"/></svg>

Before

Width:  |  Height:  |  Size: 487 B

After

Width:  |  Height:  |  Size: 463 B

View file

@ -1 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.st0{fill:#80cbc4;}.st1{fill:#ffe0b2;}</style></defs><title>folder_vscode_open</title><path class="st0" d="M20.8,5.25H12L9.8,3H3.2A2.23,2.23,0,0,0,1,5.25v13.5A2.23,2.23,0,0,0,3.2,21H20.8A2.23,2.23,0,0,0,23,18.75V7.5A2.23,2.23,0,0,0,20.8,5.25Zm0,13.5H3.2V7.5H20.8Z"/><path class="st1" d="M20.87,9.38l-6.42,5.9-3.59-2.7-1.48.86,3.54,3.25L9.37,19.94l1.48.87,3.59-2.7L20.87,24,24,22.48V10.9Zm0,3.88v6.86l-4.55-3.43Z"/></svg>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.st0{fill:#80cbc4;enable-background:new;}.st1{fill:#ffcb6b;}</style></defs><path class="st0" d="M20.8,5.25H12L9.8,3H3.2A2.23,2.23,0,0,0,1,5.25v13.5A2.23,2.23,0,0,0,3.2,21H20.8A2.23,2.23,0,0,0,23,18.75V7.5A2.23,2.23,0,0,0,20.8,5.25Zm0,13.5H3.2V7.5H20.8Z"/><path class="st1" d="M21.08,10.36l-6,5.51-3.35-2.53-1.38.81,3.3,3-3.3,3,1.38.81,3.35-2.52,6,5.5L24,22.58V11.78Zm0,3.62v6.4l-4.25-3.2Z"/></svg>

Before

Width:  |  Height:  |  Size: 526 B

After

Width:  |  Height:  |  Size: 503 B