Fix #505. Update grammars if any included grammars are updated.

This commit is contained in:
Nathan Sobo
2013-04-22 09:50:15 -06:00
parent b856ab16cf
commit 35f0b7b49e
4 changed files with 25 additions and 6 deletions

View File

@@ -15,6 +15,6 @@ class NullGrammar
tokenizeLine: (line) ->
{ tokens: [new Token(value: line, scopes: ['null-grammar.text.plain'])] }
grammarAddedOrRemoved: -> # no op
grammarUpdated: -> # noop
_.extend NullGrammar.prototype, EventEmitter

View File

@@ -34,16 +34,17 @@ class Syntax
previousGrammars = new Array(@grammars...)
@grammars.push(grammar)
@grammarsByScopeName[grammar.scopeName] = grammar
@notifyOtherGrammars(previousGrammars, grammar.scopeName)
@grammarUpdated(grammar.scopeName)
@trigger 'grammar-added', grammar
removeGrammar: (grammar) ->
_.remove(@grammars, grammar)
delete @grammarsByScopeName[grammar.scopeName]
@notifyOtherGrammars(@grammars, grammar.scopeName)
@grammarUpdated(grammar.scopeName)
notifyOtherGrammars: (grammars, scopeName) ->
grammar.grammarAddedOrRemoved(scopeName) for grammar in grammars
grammarUpdated: (scopeName) ->
for grammar in @grammars when grammar.scopeName isnt scopeName
grammar.grammarUpdated(scopeName)
setGrammarOverrideForPath: (path, scopeName) ->
@grammarOverridesByPath[path] = scopeName

View File

@@ -64,9 +64,10 @@ class TextMateGrammar
addIncludedGrammarScope: (scope) ->
@includedGrammarScopes.push(scope) unless _.include(@includedGrammarScopes, scope)
grammarAddedOrRemoved: (scopeName) =>
grammarUpdated: (scopeName) =>
return unless _.include(@includedGrammarScopes, scopeName)
@clearRules()
syntax.grammarUpdated(@scopeName)
@trigger 'grammar-updated'
getScore: (path, contents) ->