mirror of
https://github.com/atom/atom.git
synced 2026-01-23 13:58:08 -05:00
Store injections grammars on Syntax global
This commit is contained in:
committed by
Kevin Sawicki
parent
125c41a2e2
commit
228fa1abe5
@@ -23,6 +23,7 @@ class Syntax
|
||||
@nullGrammar = new NullGrammar
|
||||
@grammars = [@nullGrammar]
|
||||
@grammarsByScopeName = {}
|
||||
@injectionGrammars = []
|
||||
@grammarOverridesByPath = {}
|
||||
@scopedPropertiesIndex = 0
|
||||
@scopedProperties = []
|
||||
@@ -34,12 +35,14 @@ class Syntax
|
||||
previousGrammars = new Array(@grammars...)
|
||||
@grammars.push(grammar)
|
||||
@grammarsByScopeName[grammar.scopeName] = grammar
|
||||
@injectionGrammars.push(grammar) if grammar.injectionSelector?
|
||||
@grammarUpdated(grammar.scopeName)
|
||||
@trigger 'grammar-added', grammar
|
||||
|
||||
removeGrammar: (grammar) ->
|
||||
_.remove(@grammars, grammar)
|
||||
delete @grammarsByScopeName[grammar.scopeName]
|
||||
_.remove(@injectionGrammars, grammar)
|
||||
@grammarUpdated(grammar.scopeName)
|
||||
|
||||
grammarUpdated: (scopeName) ->
|
||||
|
||||
@@ -27,8 +27,6 @@ class TextMateGrammar
|
||||
@loadSync: (path) ->
|
||||
new TextMateGrammar(fsUtils.readObject(path))
|
||||
|
||||
@injectionGrammars: []
|
||||
|
||||
name: null
|
||||
rawPatterns: null
|
||||
rawRepository: null
|
||||
@@ -47,7 +45,6 @@ class TextMateGrammar
|
||||
|
||||
if injectionSelector?
|
||||
@injectionSelector = new TextMateScopeSelector(injectionSelector)
|
||||
TextMateGrammar.injectionGrammars.push(this)
|
||||
|
||||
@firstLineRegex = new OnigRegExp(firstLineMatch) if firstLineMatch
|
||||
@fileTypes ?= []
|
||||
@@ -279,7 +276,7 @@ class Rule
|
||||
results.push(result)
|
||||
|
||||
scopes = scopesFromStack(ruleStack)
|
||||
for injectionGrammar in _.without(TextMateGrammar.injectionGrammars, @grammar, baseGrammar)
|
||||
for injectionGrammar in _.without(syntax.injectionGrammars, @grammar, baseGrammar)
|
||||
if injectionGrammar.injectionSelector.matches(scopes)
|
||||
scanner = injectionGrammar.getInitialRule().getScanner(injectionGrammar, position, firstLine)
|
||||
if result = scanner.findNextMatch(lineWithNewline, position)
|
||||
|
||||
Reference in New Issue
Block a user