Only update injections intersecting changed ranges

This commit is contained in:
Max Brunsfeld
2018-06-26 20:54:18 -07:00
parent c05dcb0bb8
commit 890d955f70

View File

@@ -474,13 +474,14 @@ class LanguageLayer {
let affectedRange
let existingInjectionMarkers
if (this.tree) {
const changedTokenRange = this.tree.getEditedRange()
affectedRange = new Range(changedTokenRange.startPosition, changedTokenRange.endPosition)
const rangesWithSyntaxChanges = this.tree.getChangedRanges(tree)
for (const range of rangesWithSyntaxChanges) {
emitRangeUpdate(new Range(range.startPosition, range.endPosition))
}
affectedRange = new Range(Point.ZERO, Point.INFINITY)
if (rangesWithSyntaxChanges.length > 0) {
affectedRange = affectedRange.union(new Range(
rangesWithSyntaxChanges[0].startPosition,
@@ -515,6 +516,7 @@ class LanguageLayer {
if (!grammar) continue
const injectionNode = injectionPoint.content(node)
if (!injectionNode) continue
const injectionRange = new Range(injectionNode.startPosition, injectionNode.endPosition)
let marker = existingInjectionMarkers.find(m => m.getRange().isEqual(injectionRange))