mirror of
https://github.com/atom/atom.git
synced 2026-01-22 13:28:01 -05:00
Extend GrammarRegistry in Syntax
This commit is contained in:
@@ -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", ->
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user