Skip to content

Commit ab766ce

Browse files
alurmarijnh
authored andcommitted
[foldgutter and annotatescrollbar addon] Schedule update on changes instead of change
The setTimeout/clearTimeout overhead of re-scheduling on every change in a large operation can be significant. This cuts the time of a particularly large operation I was testing from 5s to 2.5s (replacing some text in ~5000 lines). The majority of the rest of the time coming from rescheduling of the highlight worker inside the startWorker call.
1 parent 538c4dc commit ab766ce

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

addon/fold/foldgutter.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
cm.clearGutter(cm.state.foldGutter.options.gutter);
1717
cm.state.foldGutter = null;
1818
cm.off("gutterClick", onGutterClick);
19-
cm.off("change", onChange);
19+
cm.off("changes", onChange);
2020
cm.off("viewportChange", onViewportChange);
2121
cm.off("fold", onFold);
2222
cm.off("unfold", onFold);
@@ -26,7 +26,7 @@
2626
cm.state.foldGutter = new State(parseOptions(val));
2727
updateInViewport(cm);
2828
cm.on("gutterClick", onGutterClick);
29-
cm.on("change", onChange);
29+
cm.on("changes", onChange);
3030
cm.on("viewportChange", onViewportChange);
3131
cm.on("fold", onFold);
3232
cm.on("unfold", onFold);

addon/scroll/annotatescrollbar.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
cm.on("markerAdded", this.resizeHandler);
4444
cm.on("markerCleared", this.resizeHandler);
4545
if (options.listenForChanges !== false)
46-
cm.on("change", this.changeHandler = function() {
46+
cm.on("changes", this.changeHandler = function() {
4747
scheduleRedraw(250);
4848
});
4949
}
@@ -116,7 +116,7 @@
116116
this.cm.off("refresh", this.resizeHandler);
117117
this.cm.off("markerAdded", this.resizeHandler);
118118
this.cm.off("markerCleared", this.resizeHandler);
119-
if (this.changeHandler) this.cm.off("change", this.changeHandler);
119+
if (this.changeHandler) this.cm.off("changes", this.changeHandler);
120120
this.div.parentNode.removeChild(this.div);
121121
};
122122
});

0 commit comments

Comments
 (0)