Switching docs would set up event listeners on Ace without tearing down any old listeners, which could lead to a memory leak. This tears down old listeners when detaching from the "old" doc
@@ -468,6 +468,7 @@ define [
editor.focus()
detachFromAce = (sharejs_doc) ->
+ tearDownSpellCheck()
sharejs_doc.detachFromAce()
sharejs_doc.off "remoteop.recordRemote"