Merge pull request #16524 from atom/mb-fix-tree-sitter-slowness

Fix two tree-sitter performance problems
This commit is contained in:
Max Brunsfeld
2018-01-09 21:29:55 -08:00
committed by GitHub
2 changed files with 9 additions and 14 deletions

View File

@@ -71,7 +71,7 @@
"sinon": "1.17.4",
"temp": "^0.8.3",
"text-buffer": "13.11.0",
"tree-sitter": "^0.8.4",
"tree-sitter": "^0.8.6",
"typescript-simple": "1.0.0",
"underscore-plus": "^1.6.6",
"winreg": "^1.2.1",

View File

@@ -361,9 +361,8 @@ class TreeSitterHighlightIterator {
var node = this.layer.document.rootNode
var childIndex = -1
var done = false
var nodeContainsTarget = true
do {
for (;;) {
this.currentNode = node
this.currentChildIndex = childIndex
if (!nodeContainsTarget) break
@@ -380,18 +379,14 @@ class TreeSitterHighlightIterator {
}
}
done = true
for (var i = 0, {children} = node, childCount = children.length; i < childCount; i++) {
const child = children[i]
if (child.endIndex > this.currentIndex) {
node = child
childIndex = i
done = false
if (child.startIndex > this.currentIndex) nodeContainsTarget = false
break
}
node = node.firstChildForIndex(this.currentIndex)
if (node) {
if (node.startIndex > this.currentIndex) nodeContainsTarget = false
childIndex = node.childIndex
} else {
break
}
} while (!done)
}
return containingTags
}