diff --git a/src/packages/git-diff/lib/git-diff-view.coffee b/src/packages/git-diff/lib/git-diff-view.coffee index 1172e0c95..f4fe50089 100644 --- a/src/packages/git-diff/lib/git-diff-view.coffee +++ b/src/packages/git-diff/lib/git-diff-view.coffee @@ -10,8 +10,8 @@ class GitDiffView @gutter = @editor.gutter @diffs = {} - @subscribe @editor, 'editor:path-changed', => @subscribeToBuffer() - @subscribe @editor, 'editor:display-updated', => @renderDiffs() + @subscribe @editor, 'editor:path-changed', @subscribeToBuffer + @subscribe @editor, 'editor:display-updated', @renderDiffs @subscribe git, 'statuses-changed', => @diffs = {} @scheduleUpdate() @@ -23,22 +23,26 @@ class GitDiffView beforeRemove: -> @unsubscribe() + @unsubscribeFromBuffer() - subscribeToBuffer: -> + unsubscribeFromBuffer: -> if @buffer? @removeDiffs() delete @diffs[@buffer.getPath()] if @buffer.destroyed - @buffer.off '.git-diff' + @buffer.off 'contents-modified', @updateDiffs @buffer = null + subscribeToBuffer: => + @unsubscribeFromBuffer() + if @buffer = @editor.getBuffer() @scheduleUpdate() unless @diffs[@buffer.getPath()]? - @buffer.on 'contents-modified.git-diff', => @updateDiffs() + @buffer.on 'contents-modified', @updateDiffs scheduleUpdate: -> - _.nextTick => @updateDiffs() + _.nextTick(@updateDiffs) - updateDiffs: -> + updateDiffs: => @generateDiffs() @renderDiffs() @@ -46,12 +50,12 @@ class GitDiffView if path = @buffer.getPath() @diffs[path] = git?.getLineDiffs(path, @buffer.getText()) - removeDiffs: -> + removeDiffs: => if @gutter.hasGitLineDiffs @gutter.find('.line-number').removeClass('git-line-added git-line-modified git-line-removed') @gutter.hasGitLineDiffs = false - renderDiffs: -> + renderDiffs: => return unless @gutter.isVisible() @removeDiffs() diff --git a/src/packages/spell-check/lib/spell-check-view.coffee b/src/packages/spell-check/lib/spell-check-view.coffee index 3f5bba2d6..40f856802 100644 --- a/src/packages/spell-check/lib/spell-check-view.coffee +++ b/src/packages/spell-check/lib/spell-check-view.coffee @@ -11,27 +11,30 @@ class SpellCheckView extends View views: [] initialize: (@editor) -> - @subscribe @editor, 'editor:path-changed', => @subscribeToBuffer() - @subscribe @editor, 'editor:grammar-changed', => @subscribeToBuffer() - @observeConfig 'editor.fontSize', => @subscribeToBuffer() - @observeConfig 'spell-check.grammars', => @subscribeToBuffer() + @subscribe @editor, 'editor:path-changed', @subscribeToBuffer + @subscribe @editor, 'editor:grammar-changed', @subscribeToBuffer + @observeConfig 'editor.fontSize', @subscribeToBuffer + @observeConfig 'spell-check.grammars', @subscribeToBuffer @subscribeToBuffer() + beforeRemove: -> + @unsubscribeFromBuffer() + unsubscribeFromBuffer: -> @destroyViews() @task?.abort() if @buffer? - @buffer.off '.spell-check' + @buffer.off 'contents-modified', @updateMisspellings @buffer = null - subscribeToBuffer: -> + subscribeToBuffer: => @unsubscribeFromBuffer() if @spellCheckCurrentGrammar() @buffer = @editor.getBuffer() - @buffer.on 'contents-modified.spell-check', => @updateMisspellings() + @buffer.on 'contents-modified', @updateMisspellings @updateMisspellings() spellCheckCurrentGrammar: -> @@ -49,11 +52,7 @@ class SpellCheckView extends View @views.push(view) @append(view) - updateMisspellings: -> - unless @editor.activeEditSession? - @unsubscribeFromBuffer() - return - + updateMisspellings: => @task?.abort() callback = (misspellings) => diff --git a/src/packages/status-bar/lib/status-bar-view.coffee b/src/packages/status-bar/lib/status-bar-view.coffee index 7a2f95a8a..50897f1e7 100644 --- a/src/packages/status-bar/lib/status-bar-view.coffee +++ b/src/packages/status-bar/lib/status-bar-view.coffee @@ -35,23 +35,31 @@ class StatusBarView extends View if git? @subscribe git, 'status-changed', (path, status) => @updateStatusBar() if path is @getActiveItemPath() - @subscribe git, 'statuses-changed', => - @updateStatusBar() + @subscribe git, 'statuses-changed', @updateStatusBar @subscribeToBuffer() + beforeRemove: -> + @unsubscribeFromBuffer() + getActiveItemPath: -> @pane.activeItem?.getPath?() + unsubscribeFromBuffer: -> + if @buffer? + @buffer.off 'modified-status-changed', @updateBufferHasModifiedText + @buffer.off 'saved', @updateStatusBar + @buffer = null + subscribeToBuffer: -> - @buffer?.off '.status-bar' + @unsubscribeFromBuffer() if @buffer = @pane.activeItem.getBuffer?() - @buffer.on 'modified-status-changed.status-bar', (isModified) => @updateBufferHasModifiedText(isModified) - @buffer.on 'saved.status-bar', => @updateStatusBar() + @buffer.on 'modified-status-changed', @updateBufferHasModifiedText + @buffer.on 'saved', @updateStatusBar @updateStatusBar() - updateStatusBar: -> + updateStatusBar: => @updateGrammarText() @updateBranchText() @updateBufferHasModifiedText(@buffer?.isModified()) @@ -65,7 +73,7 @@ class StatusBarView extends View else @grammarName.text(grammar.name).show() - updateBufferHasModifiedText: (isModified)-> + updateBufferHasModifiedText: (isModified) => if isModified @bufferModified.text('*') unless @isModified @isModified = true