Extend GrammarRegistry in Syntax

This commit is contained in:
Kevin Sawicki
2013-12-31 11:36:26 -08:00
parent a95fdce85f
commit fa9aa3691b
4 changed files with 11 additions and 46 deletions

View File

@@ -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", ->

View File

@@ -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 = []

View File

@@ -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

View File

@@ -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)