Tweak TreeSitterLanguageMode folding configuration

This commit is contained in:
Max Brunsfeld
2017-12-04 11:40:44 -08:00
parent 4e38b61a5e
commit 98e11673aa
3 changed files with 59 additions and 16 deletions

View File

@@ -10,9 +10,10 @@ class TreeSitterGrammar {
this.id = params.id
this.name = params.name
this.foldConfig = params.folds || {}
if (!this.foldConfig.delimiters) this.foldConfig.delimiters = []
if (!this.foldConfig.tokens) this.foldConfig.tokens = []
this.foldConfig = {
delimiters: params.folds && params.folds.delimiters || [],
nodes: new Set(params.folds && params.folds.nodes || [])
}
this.commentStrings = {
commentStartString: params.comments && params.comments.start,

View File

@@ -207,18 +207,15 @@ class TreeSitterLanguageMode {
}
}
}
} else {
for (let i = 0, n = this.grammar.foldConfig.tokens.length; i < n; i++) {
const foldableToken = this.grammar.foldConfig.tokens[i]
if (node.type === foldableToken[0]) {
if (existenceOnly) return true
const start = node.startPosition
const end = node.endPosition
start.column += foldableToken[1]
end.column -= foldableToken[2]
return Range(start, end)
}
}
}
if (this.grammar.foldConfig.nodes.has(node.type)) {
if (existenceOnly) return true
const start = node.startPosition
const end = node.endPosition
start.column = Infinity
end.column = 0
return Range(start, end)
}
}