mirror of
https://github.com/atom/atom.git
synced 2026-04-06 03:02:13 -04:00
Serialize all included grammar scopes
This commit is contained in:
@@ -197,6 +197,11 @@ class PackageManager
|
||||
getLoadedPackagesForTypes: (types) ->
|
||||
pack for pack in @getLoadedPackages() when pack.getType() in types
|
||||
|
||||
getPackageForGrammarScopeName: (scopeName) ->
|
||||
for pack in @getLoadedPackages()
|
||||
return pack if scopeName in pack.getGrammarScopes()
|
||||
null
|
||||
|
||||
# Public: Resolve the given package name to a path on disk.
|
||||
resolvePackagePath: (name) ->
|
||||
return name if fs.isDirectorySync(name)
|
||||
|
||||
@@ -42,9 +42,8 @@ class Package
|
||||
@name = @metadata?.name ? path.basename(@path)
|
||||
@reset()
|
||||
|
||||
atom.syntax.on 'request-grammar-preload', (name) =>
|
||||
return unless name in ['YAML', 'CoffeeScript'] and @name in ['language-yaml', 'language-coffee-script']
|
||||
@loadGrammarsSync()
|
||||
atom.syntax.on 'request-grammar-preload', ({packageName, scopeName}={}) =>
|
||||
@loadGrammarsSync() if packageName == @name
|
||||
|
||||
enable: ->
|
||||
atom.config.removeAtKeyPath('core.disabledPackages', @name)
|
||||
@@ -181,7 +180,6 @@ class Package
|
||||
loadGrammarsSync: ->
|
||||
return if @grammarsLoaded
|
||||
|
||||
@grammars = []
|
||||
grammarsDirPath = path.join(@path, 'grammars')
|
||||
grammarPaths = fs.listSync(grammarsDirPath, ['json', 'cson'])
|
||||
for grammarPath in grammarPaths
|
||||
@@ -198,8 +196,6 @@ class Package
|
||||
loadGrammars: ->
|
||||
return if @grammarsLoaded
|
||||
|
||||
@grammars = []
|
||||
|
||||
loadGrammar = (grammarPath, callback) =>
|
||||
atom.syntax.readGrammar grammarPath, (error, grammar) =>
|
||||
if error?
|
||||
|
||||
@@ -35,8 +35,8 @@ class Syntax extends GrammarRegistry
|
||||
|
||||
createToken: (value, scopes) -> new Token({value, scopes})
|
||||
|
||||
requestGrammarPreload: (grammarName) ->
|
||||
@emit('request-grammar-preload', grammarName)
|
||||
requestGrammarPreload: (grammarPackageAndScope) ->
|
||||
@emit('request-grammar-preload', grammarPackageAndScope)
|
||||
|
||||
# Deprecated: Used by settings-view to display snippets for packages
|
||||
@::accessor 'scopedProperties', ->
|
||||
|
||||
@@ -47,12 +47,24 @@ class TokenizedBuffer extends Model
|
||||
@reloadGrammar()
|
||||
|
||||
serializeParams: ->
|
||||
packageNameForScope = (scope) ->
|
||||
atom.packages.getPackageForGrammarScopeName(scopeName)?.name
|
||||
|
||||
scopeName = @grammar.scopeName
|
||||
packageName = packageNameForScope(@grammar.scopeName)
|
||||
grammars = [{scopeName, packageName}]
|
||||
for scopeName in @grammar.includedGrammarScopes
|
||||
grammars.push {scopeName, packageName: packageNameForScope(scopeName)}
|
||||
|
||||
bufferPath: @buffer.getPath()
|
||||
tabLength: @tabLength
|
||||
grammar: @grammar.name
|
||||
grammars: grammars
|
||||
|
||||
deserializeParams: (params) ->
|
||||
atom.syntax.requestGrammarPreload(params.grammar)
|
||||
if params.grammars?
|
||||
for grammar in params.grammars
|
||||
atom.syntax.requestGrammarPreload(grammar)
|
||||
|
||||
params.buffer = atom.project.bufferForPathSync(params.bufferPath)
|
||||
params
|
||||
|
||||
|
||||
Reference in New Issue
Block a user