Просмотр исходного кода

Instead of setting value of CM, swap Docs

This allows for tracking changes on individual docs (i.e. files), instead of
just changes to the editor. This is similar to how Ace works with sessions
Alasdair Smith 8 лет назад
Родитель
Сommit
c85e9ba3b1

+ 3 - 2
services/web/public/coffee/ide/editor/directives/cmEditor.coffee

@@ -17,8 +17,9 @@ define [
             attachToCM(sharejsDoc)
 
         attachToCM = (sharejsDoc) ->
-          cm.setValue(sharejsDoc.getSnapshot())
-          sharejsDoc.attachToCM(cm)
+          setTimeout () ->
+            Frontend.richText.openDoc(cm, sharejsDoc.getSnapshot())
+            sharejsDoc.attachToCM(cm)
 
         detachFromCM = (sharejsDoc) ->
           sharejsDoc.detachFromCM()

+ 7 - 1
services/web/public/es/rich-text.js

@@ -1,5 +1,11 @@
-import CodeMirror from 'codemirror'
+import CodeMirror, { Doc } from 'codemirror'
 
 export function init(rootEl) {
   return CodeMirror(rootEl)
 }
+
+export function openDoc(cm, content) {
+  const newDoc = Doc(content)
+  cm.swapDoc(newDoc)
+  return newDoc
+}