Procházet zdrojové kódy

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 před 8 roky
rodič
revize
c85e9ba3b1

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

@@ -17,8 +17,9 @@ define [
             attachToCM(sharejsDoc)
             attachToCM(sharejsDoc)
 
 
         attachToCM = (sharejsDoc) ->
         attachToCM = (sharejsDoc) ->
-          cm.setValue(sharejsDoc.getSnapshot())
-          sharejsDoc.attachToCM(cm)
+          setTimeout () ->
+            Frontend.richText.openDoc(cm, sharejsDoc.getSnapshot())
+            sharejsDoc.attachToCM(cm)
 
 
         detachFromCM = (sharejsDoc) ->
         detachFromCM = (sharejsDoc) ->
           sharejsDoc.detachFromCM()
           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) {
 export function init(rootEl) {
   return CodeMirror(rootEl)
   return CodeMirror(rootEl)
 }
 }
+
+export function openDoc(cm, content) {
+  const newDoc = Doc(content)
+  cm.swapDoc(newDoc)
+  return newDoc
+}