import { workspace as Workspace, commands as Commands } from 'vscode'; import { THEME_ACCENTS_SETTER } from "./commands/accents-setter/index"; import { THEME_ICONS } from "./commands/theme-icons/index"; import { shouldShowChangelog, showChangelog } from './helpers/changelog'; import { reloadWindow, getCurrentThemeID, setIconsID } from "./helpers/vscode"; const isMaterialTheme = (currentTheme: string): boolean => currentTheme.includes('Material Theme'); export function activate() { const config = Workspace.getConfiguration(); // Listen on set theme: when the theme is Material Theme, just adjust icon and accent. Workspace.onDidChangeConfiguration(event => { const isColorTheme = event.affectsConfiguration('workbench.colorTheme'); const currentTheme = getCurrentThemeID(); if (isColorTheme && isMaterialTheme(currentTheme)) { setIconsID('eq-material-theme-icons') .then(() => THEME_ICONS().catch(error => console.trace(error))) .then(() => reloadWindow()); } }); // Delete old configuration, must remove with next major release if (config.has('materialTheme.cache.workbench')) { config.update('materialTheme.cache.workbench', undefined, true); } if (shouldShowChangelog()) { showChangelog(); } // Registering commands Commands.registerCommand('materialTheme.setAccent', () => THEME_ACCENTS_SETTER()); Commands.registerCommand('materialTheme.fixIcons', () => THEME_ICONS() .then(() => reloadWindow()) .catch(err => console.trace(err)) ); Commands.registerCommand('materialTheme.showChangelog', () => showChangelog()); }