From fa9aa3691befec1d4c2be7824b697260d57b261f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 31 Dec 2013 11:36:26 -0800 Subject: [PATCH] Extend GrammarRegistry in Syntax --- spec/syntax-spec.coffee | 6 ++--- src/atom-package.coffee | 2 +- src/syntax.coffee | 44 ++++-------------------------------- src/text-mate-package.coffee | 5 ++-- 4 files changed, 11 insertions(+), 46 deletions(-) diff --git a/spec/syntax-spec.coffee b/spec/syntax-spec.coffee index 66fbc9824..92373c53d 100644 --- a/spec/syntax-spec.coffee +++ b/spec/syntax-spec.coffee @@ -15,7 +15,7 @@ describe "the `syntax` global", -> expect(atom.syntax.selectGrammar(filePath).name).not.toBe 'Ruby' atom.syntax.setGrammarOverrideForPath(filePath, 'source.ruby') syntax2 = atom.deserializers.deserialize(atom.syntax.serialize()) - syntax2.addGrammar(grammar) for grammar in atom.syntax.registry.grammars when grammar isnt atom.syntax.registry.nullGrammar + syntax2.addGrammar(grammar) for grammar in atom.syntax.grammars when grammar isnt atom.syntax.nullGrammar expect(syntax2.selectGrammar(filePath).name).toBe 'Ruby' describe ".selectGrammar(filePath)", -> @@ -67,7 +67,7 @@ describe "the `syntax` global", -> scopeName: 'source1' fileTypes: ['test'] ) - grammar1 = atom.syntax.registry.loadGrammarSync(grammarPath1) + grammar1 = atom.syntax.loadGrammarSync(grammarPath1) expect(atom.syntax.selectGrammar('more.test', '')).toBe grammar1 grammarPath2 = temp.path(suffix: '.json') @@ -76,7 +76,7 @@ describe "the `syntax` global", -> scopeName: 'source2' fileTypes: ['test', 'more.test'] ) - grammar2 = atom.syntax.registry.loadGrammarSync(grammarPath2) + grammar2 = atom.syntax.loadGrammarSync(grammarPath2) expect(atom.syntax.selectGrammar('more.test', '')).toBe grammar2 describe "when there is no file path", -> diff --git a/src/atom-package.coffee b/src/atom-package.coffee index 204364d15..4349cde9c 100644 --- a/src/atom-package.coffee +++ b/src/atom-package.coffee @@ -151,7 +151,7 @@ class AtomPackage extends Package @grammars = [] grammarsDirPath = path.join(@path, 'grammars') for grammarPath in fs.listSync(grammarsDirPath, ['.json', '.cson']) - @grammars.push(atom.syntax.registry.loadGrammarSync(grammarPath)) + @grammars.push(atom.syntax.loadGrammarSync(grammarPath)) loadScopedProperties: -> @scopedProperties = [] diff --git a/src/syntax.coffee b/src/syntax.coffee index b394dfa40..85c4d7b02 100644 --- a/src/syntax.coffee +++ b/src/syntax.coffee @@ -1,6 +1,6 @@ _ = require 'underscore-plus' {specificity} = require 'clear-cut' -{Emitter, Subscriber} = require 'emissary' +{Subscriber} = require 'emissary' FirstMate = require 'first-mate' TextMateScopeSelector = FirstMate.ScopeSelector TextMateGrammarRegistry = FirstMate.GrammarRegistry @@ -9,58 +9,24 @@ TextMateGrammarRegistry = FirstMate.GrammarRegistry ### Public ### module.exports = -class Syntax - Emitter.includeInto(this) +class Syntax extends TextMateGrammarRegistry Subscriber.includeInto(this) atom.deserializers.add(this) @deserialize: ({grammarOverridesByPath}) -> syntax = new Syntax() - syntax.registry.grammarOverridesByPath = grammarOverridesByPath + syntax.grammarOverridesByPath = grammarOverridesByPath syntax constructor: -> - @registry = new TextMateGrammarRegistry() - - #TODO Remove once packages have been updated - @subscribe @registry, 'grammar-added', (grammar) => - @emit 'grammar-added', grammar - @subscribe @registry, 'grammar-updated', (grammar) => - @emit 'grammar-updated', grammar - @__defineGetter__ 'grammars', -> @registry.grammars - @nullGrammar = @registry.nullGrammar + super @scopedPropertiesIndex = 0 @scopedProperties = [] serialize: -> - deserializer: @constructor.name - grammarOverridesByPath: @registry.grammarOverridesByPath - - addGrammar: (grammar) -> - @registry.addGrammar(grammar) - - removeGrammar: (grammar) -> - @registry.removeGrammar(grammar) - - setGrammarOverrideForPath: (path, scopeName) -> - @registry.setGrammarOverrideForPath(path, scopeName) - - clearGrammarOverrideForPath: (path) -> - @registry.clearGrammarOverrideForPath(path) - - clearGrammarOverrides: -> - @registry.clearGrammarOverrides() - - selectGrammar: (filePath, fileContents) -> - @registry.selectGrammar(filePath, fileContents) - - grammarOverrideForPath: (path) -> - @grammarOverridesByPath[path] - - grammarForScopeName: (scopeName) -> - @registry.grammarForScopeName(scopeName) + {deserializer: @constructor.name, @grammarOverridesByPath} addProperties: (args...) -> name = args.shift() if args.length > 2 diff --git a/src/text-mate-package.coffee b/src/text-mate-package.coffee index 3bccbde94..3daf8d353 100644 --- a/src/text-mate-package.coffee +++ b/src/text-mate-package.coffee @@ -65,8 +65,7 @@ class TextMatePackage extends Package done() loadGrammarAtPath: (grammarPath, done) => - atom.syntax.registry.readGrammar grammarPath, (error, grammar) => - console.log error, grammar + atom.syntax.readGrammar grammarPath, (error, grammar) => if error? console.log("Error loading grammar at path '#{grammarPath}':", error.stack ? error) else @@ -75,7 +74,7 @@ class TextMatePackage extends Package loadGrammarsSync: -> for grammarPath in fs.listSync(@getSyntaxesPath(), @legalGrammarExtensions) - @addGrammar(atom.syntax.registry.readGrammarSync(grammarPath)) + @addGrammar(atom.syntax.readGrammarSync(grammarPath)) addGrammar: (grammar) -> @grammars.push(grammar)