From d060ecdc243d77c29da6e190e7d14e5af898b711 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 21 Oct 2014 15:24:35 -0600 Subject: [PATCH] Assign package stylesheet context based on double-extension in file name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If stylesheet files are named with 2 extensions, the first extension is used as the context argument when the package’s stylesheets are loaded. This allows people to target the text editor by naming their stylesheet `index.atom-text-editor.less`. --- .../stylesheets/4.test-context.css | 1 + spec/package-manager-spec.coffee | 5 +++++ src/package.coffee | 7 ++++++- 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/packages/package-with-stylesheets/stylesheets/4.test-context.css diff --git a/spec/fixtures/packages/package-with-stylesheets/stylesheets/4.test-context.css b/spec/fixtures/packages/package-with-stylesheets/stylesheets/4.test-context.css new file mode 100644 index 000000000..2cf54c986 --- /dev/null +++ b/spec/fixtures/packages/package-with-stylesheets/stylesheets/4.test-context.css @@ -0,0 +1 @@ +a { color: red } diff --git a/spec/package-manager-spec.coffee b/spec/package-manager-spec.coffee index 2cacbfb1d..c79d36c18 100644 --- a/spec/package-manager-spec.coffee +++ b/spec/package-manager-spec.coffee @@ -298,6 +298,11 @@ describe "PackageManager", -> expect(atom.themes.stylesheetElementForId(three)).not.toBeNull() expect($('#jasmine-content').css('font-size')).toBe '3px' + it "assigns the stylesheet's context based on the filename", -> + atom.packages.activatePackage("package-with-stylesheets") + element = atom.styles.getStyleElements().find (element) -> element.context is 'test-context' + expect(element).toBeDefined() + describe "grammar loading", -> it "loads the package's grammars", -> waitsForPromise -> diff --git a/src/package.coffee b/src/package.coffee index c465a3cb8..79485da69 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -176,10 +176,15 @@ class Package activateStylesheets: -> return if @stylesheetsActivated - context = 'atom-text-editor' if @metadata.theme is 'syntax' + group = @getStylesheetType() @stylesheetDisposables = new CompositeDisposable for [sourcePath, source] in @stylesheets + if match = path.basename(sourcePath).match(/[^.]*\.([^.]*)\./) + context = match[1] + else if @metadata.theme is 'syntax' + context = 'atom-text-editor' + @stylesheetDisposables.add(atom.styles.addStyleSheet(source, {sourcePath, group, context})) @stylesheetsActivated = true