From 958eb1a53b28f31525ea987cf3cb1e5adcf3cb54 Mon Sep 17 00:00:00 2001 From: rjmacarthy Date: Wed, 24 Apr 2024 15:48:02 +0100 Subject: [PATCH] cache parser don't init every time --- src/extension/parser-utils.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/extension/parser-utils.ts b/src/extension/parser-utils.ts index b0e7b750..deec34d3 100644 --- a/src/extension/parser-utils.ts +++ b/src/extension/parser-utils.ts @@ -1,19 +1,26 @@ import Parser, { SyntaxNode } from 'web-tree-sitter' -import { - WASM_LANGAUAGES -} from '../common/constants' +import { WASM_LANGAUAGES } from '../common/constants' import path from 'path' import { Logger } from '../common/logger' import { Position } from 'vscode' const logger = new Logger() +let parser: Parser +let fileExtension = '' + export const getParser = async ( filePath: string ): Promise => { + const newFileExtension = path.extname(filePath).slice(1) + const language = WASM_LANGAUAGES[newFileExtension] + + if (newFileExtension === fileExtension && parser) return parser + + fileExtension = newFileExtension + await Parser.init() - const parser = new Parser() - const extension = path.extname(filePath).slice(1) - const language = WASM_LANGAUAGES[extension] + + parser = new Parser() logger.log(`Using parser for ${language}`)