Track packages to preload in Atom class

This commit is contained in:
Kevin Sawicki
2014-06-23 15:59:26 -07:00
parent f3d87b1653
commit bb5d628397
3 changed files with 14 additions and 10 deletions

View File

@@ -250,6 +250,13 @@ class Atom extends Model
storeWindowDimensions: ->
@state.windowDimensions = @getWindowDimensions()
storeGrammarsForOpenEditors: ->
packageNames = []
for editor in @workspace.getEditors()
{packageName} = editor.getGrammar()
packageNames.push(packageName) if packageName
@state.packagesWithActiveGrammars = _.uniq(packageNames)
# Public: Get the load settings for the current window.
#
# Returns an object containing all the load setting key/value pairs.
@@ -272,6 +279,11 @@ class Atom extends Model
@packages.packageStates = @state.packageStates ? {}
delete @state.packageStates
preloadGrammarsForOpenEditors: ->
packagesWithActiveGrammars = @state.packagesWithActiveGrammars ? []
for packageName in packagesWithActiveGrammars
@packages.getLoadedPackage(packageName)?.loadGrammarsSync()
deserializeEditorWindow: ->
@deserializePackageStates()
@deserializeProject()
@@ -293,6 +305,7 @@ class Atom extends Model
@keymaps.loadBundledKeymaps()
@themes.loadBaseStylesheets()
@packages.loadPackages()
@preloadGrammarsForOpenEditors()
@deserializeEditorWindow()
@packages.activate()
@keymaps.loadUserKeymap()

View File

@@ -47,18 +47,8 @@ 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
grammars: grammars
deserializeParams: (params) ->
if params.grammars?

View File

@@ -42,6 +42,7 @@ class WindowEventHandler
@subscribe $(window), 'unload', ->
atom.storeWindowDimensions()
atom.storeGrammarsForOpenEditors()
@subscribeToCommand $(window), 'window:toggle-full-screen', -> atom.toggleFullScreen()