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() @buffer.release()
selection.destroy() for selection in @getSelections() selection.destroy() for selection in @getSelections()
@displayBuffer.destroy() @displayBuffer.destroy()
@languageMode.destroy()
@project?.removeEditSession(this) @project?.removeEditSession(this)
@trigger 'destroyed' @trigger 'destroyed'
@off() @off()

View File

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