vsc-material-theme/extensions/helpers/configuration-change.ts

40 lines
1.3 KiB
TypeScript
Raw Normal View History

import {
ConfigurationChangeEvent
} from 'vscode';
import {isMaterialThemeIcons, isMaterialTheme, getAccent} from './settings';
import {getCurrentThemeIconsID, getCurrentThemeID} from './vscode';
import handleAutoapply from './handle-autoapply';
import {accentsSetter} from '../commands';
const onIconsChanged = () => {
const currentIconsTheme = getCurrentThemeIconsID();
return handleAutoapply(isMaterialThemeIcons(currentIconsTheme));
};
const onThemeChanged = () => {
const currentTheme = getCurrentThemeID();
return handleAutoapply(isMaterialTheme(currentTheme));
};
const onAccentChanged = () => {
const currentTheme = getCurrentThemeID();
const currentIconsTheme = getCurrentThemeIconsID();
const currentAccent = getAccent();
return accentsSetter(currentAccent)
.then(() =>
handleAutoapply(
isMaterialTheme(currentTheme) && isMaterialThemeIcons(currentIconsTheme)
)
);
};
export const onChangeConfiguration = (event: ConfigurationChangeEvent) => {
const isColorTheme = event.affectsConfiguration('workbench.colorTheme');
const isIconTheme = event.affectsConfiguration('workbench.iconTheme');
const isAccent = event.affectsConfiguration('materialTheme.accent');
return isIconTheme ? onIconsChanged() :
isColorTheme ? onThemeChanged() :
isAccent ? onAccentChanged() : null;
};