Initialize Parser only once

This commit is contained in:
Saoud Rizwan
2024-07-31 17:02:24 -04:00
parent 5c38110933
commit 565acd921e

View File

@@ -26,6 +26,15 @@ async function loadLanguage(langName: string) {
return await Parser.Language.load(path.join(__dirname, `tree-sitter-${langName}.wasm`))
}
let isParserInitialized = false
async function initializeParser() {
if (!isParserInitialized) {
await Parser.init()
isParserInitialized = true
}
}
/*
Using node bindings for tree-sitter is problematic in vscode extensions
because of incompatibility with electron. Going the .wasm route has the
@@ -49,7 +58,7 @@ Sources:
- https://github.com/tree-sitter/tree-sitter/blob/master/lib/binding_web/test/query-test.js
*/
export async function loadRequiredLanguageParsers(filesToParse: string[]): Promise<LanguageParser> {
await Parser.init()
await initializeParser()
const extensionsToLoad = new Set(filesToParse.map((file) => path.extname(file).toLowerCase().slice(1)))
const parsers: LanguageParser = {}
for (const ext of extensionsToLoad) {