Make LanguageMode unsubscribe from syntax global when destroyed

This commit is contained in:
Corey Johnson & Nathan Sobo 2013-04-03 18:14:52 -06:00
parent 1b56cfb270
commit 144984c726
2 changed files with 7 additions and 1 deletions

View File

@ -83,6 +83,7 @@ class EditSession
@buffer.release()
selection.destroy() for selection in @getSelections()
@displayBuffer.destroy()
@languageMode.destroy()
@project?.removeEditSession(this)
@trigger 'destroyed'
@off()

View File

@ -3,6 +3,7 @@ _ = require 'underscore'
require 'underscore-extensions'
{OnigRegExp} = require 'oniguruma'
EventEmitter = require 'event-emitter'
Subscriber = require 'subscriber'
module.exports =
class LanguageMode
@ -14,10 +15,13 @@ class LanguageMode
constructor: (@editSession) ->
@buffer = @editSession.buffer
@reloadGrammar()
syntax.on 'grammar-added', (grammar) =>
@subscribe syntax, 'grammar-added', (grammar) =>
newScore = grammar.getScore(@buffer.getPath(), @buffer.getText())
@setGrammar(grammar, newScore) if newScore > @currentGrammarScore
destroy: ->
@unsubscribe()
setGrammar: (grammar, score) ->
return if grammar is @grammar
@grammar = grammar
@ -169,3 +173,4 @@ class LanguageMode
new OnigRegExp(foldEndPattern)
_.extend LanguageMode.prototype, EventEmitter
_.extend LanguageMode.prototype, Subscriber