mirror of
https://github.com/atom/atom.git
synced 2026-01-25 06:48:28 -05:00
Merge pull request #16524 from atom/mb-fix-tree-sitter-slowness
Fix two tree-sitter performance problems
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user