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

Improve collaborator cursor positioning (#14145)

GitOrigin-RevId: c43f0877700381279c2f79699ea3963c3e9c12b3
Alf Eaton 3 лет назад
Родитель
Сommit
1f173010c7

+ 9 - 1
services/web/frontend/js/features/source-editor/extensions/cursor-highlights.ts

@@ -1,8 +1,10 @@
 import {
+  MapMode,
   RangeSet,
   RangeValue,
   StateEffect,
   StateField,
+  Transaction,
   TransactionSpec,
 } from '@codemirror/state'
 import {
@@ -67,9 +69,15 @@ export const cursorHighlights = () => {
 }
 
 class HighlightRangeValue extends RangeValue {
+  mapMode = MapMode.Simple
+
   constructor(public highlight: Highlight) {
     super()
   }
+
+  eq(other: HighlightRangeValue) {
+    return other.highlight === this.highlight
+  }
 }
 
 const cursorHighlightsState = StateField.define<RangeSet<HighlightRangeValue>>({
@@ -101,7 +109,7 @@ const cursorHighlightsState = StateField.define<RangeSet<HighlightRangeValue>>({
       }
     }
 
-    if (tr.docChanged) {
+    if (tr.docChanged && !tr.annotation(Transaction.remote)) {
       value = value.map(tr.changes)
     }