diff --git a/packages/client-app/internal_packages/plugins/lib/main.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/main.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/main.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/main.jsx diff --git a/packages/client-app/internal_packages/plugins/lib/package-set.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/package-set.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/package-set.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/package-set.jsx diff --git a/packages/client-app/internal_packages/plugins/lib/package.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/package.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/package.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/package.jsx diff --git a/packages/client-app/internal_packages/plugins/lib/packages-store.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/packages-store.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/packages-store.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/packages-store.jsx diff --git a/packages/client-app/internal_packages/plugins/lib/plugins-actions.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/plugins-actions.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/plugins-actions.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/plugins-actions.jsx diff --git a/packages/client-app/internal_packages/plugins/lib/plugins-tabs-view.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/plugins-tabs-view.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/plugins-tabs-view.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/plugins-tabs-view.jsx diff --git a/packages/client-app/internal_packages/plugins/lib/preferences-plugins.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/preferences-plugins.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/preferences-plugins.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/preferences-plugins.jsx diff --git a/packages/client-app/internal_packages/plugins/lib/tab-explore.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/tab-explore.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/tab-explore.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/tab-explore.jsx diff --git a/packages/client-app/internal_packages/plugins/lib/tab-installed.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/tab-installed.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/tab-installed.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/tab-installed.jsx diff --git a/packages/client-app/internal_packages/plugins/lib/tabs-store.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/tabs-store.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/tabs-store.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/tabs-store.jsx diff --git a/packages/client-app/internal_packages/plugins/lib/tabs.jsx b/packages/client-app/internal_packages_disabled/plugins/lib/tabs.jsx similarity index 100% rename from packages/client-app/internal_packages/plugins/lib/tabs.jsx rename to packages/client-app/internal_packages_disabled/plugins/lib/tabs.jsx diff --git a/packages/client-app/internal_packages/plugins/package.json b/packages/client-app/internal_packages_disabled/plugins/package.json similarity index 100% rename from packages/client-app/internal_packages/plugins/package.json rename to packages/client-app/internal_packages_disabled/plugins/package.json diff --git a/packages/client-app/internal_packages/plugins/styles/plugins.less b/packages/client-app/internal_packages_disabled/plugins/styles/plugins.less similarity index 100% rename from packages/client-app/internal_packages/plugins/styles/plugins.less rename to packages/client-app/internal_packages_disabled/plugins/styles/plugins.less diff --git a/packages/client-app/spec/themes/theme-manager-spec.coffee b/packages/client-app/spec/themes/theme-manager-spec.coffee index 7eda6f30f..3361b4d34 100644 --- a/packages/client-app/spec/themes/theme-manager-spec.coffee +++ b/packages/client-app/spec/themes/theme-manager-spec.coffee @@ -32,7 +32,7 @@ describe "ThemeManager", -> describe "theme getters and setters", -> beforeEach -> - NylasEnv.packages.loadPackages() + NylasEnv.packages.activatePackage() it 'getAvailableThemes get all the loaded themes', -> themes = themeManager.getAvailableThemes() diff --git a/packages/client-app/src/nylas-env.es6 b/packages/client-app/src/nylas-env.es6 index b57080833..e40da7ba3 100644 --- a/packages/client-app/src/nylas-env.es6 +++ b/packages/client-app/src/nylas-env.es6 @@ -379,12 +379,16 @@ export default class NylasEnvConstructor { _findPluginsFromError(error) { if (!error.stack) { return []; } - const left = error.stack.match(/((?:\/[\w-_]+)+)/g); - const stackPaths = left || []; - const stackTokens = _.uniq(_.flatten(stackPaths.map(p => p.split("/")))); - const pluginIdsByPathBase = this.packages.getPluginIdsByPathBase(); - const tokens = _.intersection(Object.keys(pluginIdsByPathBase), stackTokens); - return tokens.map(tok => pluginIdsByPathBase[tok]); + const stackPaths = error.stack.match(/((?:\/[\w-_]+)+)/g) || []; + const stackPathComponents = _.uniq(_.flatten(stackPaths.map(p => p.split("/")))); + + const names = []; + for (const pkg of this.packages.getActivePackages()) { + if (stackPathComponents.includes(path.basename(pkg.directory))) { + names.push(pkg.name); + } + } + return names; } /* diff --git a/packages/client-app/src/theme-manager.es6 b/packages/client-app/src/theme-manager.es6 index b68bca8dc..d758bf692 100644 --- a/packages/client-app/src/theme-manager.es6 +++ b/packages/client-app/src/theme-manager.es6 @@ -4,6 +4,19 @@ import fs from 'fs-plus'; const CONFIG_THEME_KEY = 'core.theme'; +/** + * The ThemeManager observes the user's theme selection and ensures that + * LESS stylesheets in packages are compiled to CSS with the theme's + * variables in the @import path. When the theme changes, the ThemeManager + * empties it's LESSCache and rebuilds all less stylesheets against the + * new theme. + * + * This class is loosely based on Atom's Theme Manager but: + * - Only one theme is active at a time and always overrides ui-light + * - Theme packages are never "activated" by the package manager, + * they are only placed in the LESS import path. + * - ThemeManager directly updates