From 2d73aa292de71b48f52aff37ea3e176884a9f3b8 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 31 Dec 2012 14:18:45 -0600 Subject: [PATCH] Make theme loading more similar to package loading These changes are mostly aesthetic in nature. I just thought it would be a good idea to have theme loading be parallel to package loading as much as possible. So I localized more logic on the `atom` global. --- spec/app/text-mate-theme-spec.coffee | 2 +- spec/app/theme-spec.coffee | 16 ---------------- src/app/atom.coffee | 11 ++++++++++- src/app/config.coffee | 2 +- src/app/package.coffee | 6 +++--- src/app/theme.coffee | 12 +++--------- 6 files changed, 18 insertions(+), 31 deletions(-) diff --git a/spec/app/text-mate-theme-spec.coffee b/spec/app/text-mate-theme-spec.coffee index 0ea739f7e..381d3297e 100644 --- a/spec/app/text-mate-theme-spec.coffee +++ b/spec/app/text-mate-theme-spec.coffee @@ -8,7 +8,7 @@ describe "TextMateTheme", -> beforeEach -> themePath = require.resolve(fs.join('fixtures', 'test.tmTheme')) - [theme] = Theme.load(themePath) + theme = Theme.load(themePath) afterEach -> theme.deactivate() diff --git a/spec/app/theme-spec.coffee b/spec/app/theme-spec.coffee index 5990aec2c..c7a734862 100644 --- a/spec/app/theme-spec.coffee +++ b/spec/app/theme-spec.coffee @@ -30,19 +30,3 @@ describe "@load(name)", -> expect($(".editor").css("padding-top")).toBe("101px") expect($(".editor").css("padding-right")).toBe("102px") expect($(".editor").css("padding-bottom")).toBe("103px") - - describe "when name is an array of themes", -> - it "loads all themes in order", -> - firstThemePath = require.resolve(fs.join('fixtures', 'test.tmTheme')) - secondThemePath = require.resolve(fs.join('fixtures', 'test-atom-theme')) - - expect($(".editor").css("padding-top")).not.toBe("101px") - expect($(".editor").css("padding-right")).not.toBe("102px") - expect($(".editor").css("padding-bottom")).not.toBe("103px") - expect($(".editor").css("color")).not.toBe("rgb(0, 255, 0)") - - themes = Theme.load([firstThemePath, secondThemePath]) - expect($(".editor").css("padding-top")).toBe("101px") - expect($(".editor").css("padding-right")).toBe("102px") - expect($(".editor").css("padding-bottom")).toBe("103px") - expect($(".editor").css("color")).toBe("rgb(255, 0, 0)") diff --git a/src/app/atom.coffee b/src/app/atom.coffee index 82a406bd7..928271c89 100644 --- a/src/app/atom.coffee +++ b/src/app/atom.coffee @@ -3,6 +3,7 @@ fs = require 'fs' _ = require 'underscore' Package = require 'package' TextMatePackage = require 'text-mate-package' +Theme = require 'theme' messageIdCounter = 1 originalSendMessageToBrowserProcess = atom.sendMessageToBrowserProcess @@ -30,7 +31,15 @@ _.extend atom, @loadPackage(packageName) unless _.contains(disabledPackages, packageName) loadPackage: (name) -> - Package.forName(name).load() + Package.load(name) + + loadThemes: -> + themeNames = config.get("core.themes") ? ['IR_Black'] + themeNames = [themeNames] unless _.isArray(themeNames) + @loadTheme(themeName) for themeName in themeNames + + loadTheme: (name) -> + Theme.load(name) open: (args...) -> @sendMessageToBrowserProcess('open', args) diff --git a/src/app/config.coffee b/src/app/config.coffee index 0e3d0b035..0a7e1b181 100644 --- a/src/app/config.coffee +++ b/src/app/config.coffee @@ -32,7 +32,7 @@ class Config @loadUserConfig() @requireUserInitScript() atom.loadPackages() - Theme.load(config.get("core.theme") ? 'IR_Black') + atom.loadThemes() loadUserConfig: -> if fs.exists(configJsonPath) diff --git a/src/app/package.coffee b/src/app/package.coffee index 88fcf7ef1..cac85ba42 100644 --- a/src/app/package.coffee +++ b/src/app/package.coffee @@ -2,14 +2,14 @@ fs = require 'fs' module.exports = class Package - @forName: (name) -> + @load: (name) -> AtomPackage = require 'atom-package' TextMatePackage = require 'text-mate-package' if TextMatePackage.testName(name) - new TextMatePackage(name) + new TextMatePackage(name).load() else - new AtomPackage(name) + new AtomPackage(name).load() constructor: (@name) -> @path = require.resolve(@name, verifyExistence: false) diff --git a/src/app/theme.coffee b/src/app/theme.coffee index 1f8fea54e..dde5144bb 100644 --- a/src/app/theme.coffee +++ b/src/app/theme.coffee @@ -6,13 +6,7 @@ module.exports = class Theme @stylesheets: null - @load: (names) -> - if typeof(names) == "string" - [@loadTheme(names)] - else - names.map (name) => @loadTheme(name) - - @loadTheme: (name) -> + @load: (name) -> if fs.exists(name) path = name else @@ -25,7 +19,7 @@ class Theme theme = @loadAtomTheme(path) throw new Error("Cannot activate theme named '#{name}' located at '#{path}'") unless theme - theme.activate() + theme.load() theme @loadTextMateTheme: (path) -> @@ -47,7 +41,7 @@ class Theme constructor: (@path) -> @stylesheets = {} - activate: -> + load: -> for stylesheetPath, stylesheetContent of @stylesheets applyStylesheet(stylesheetPath, stylesheetContent)