From 171e4e88ca0f0b9970b52850eea13874f0aa3459 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 29 Mar 2017 21:45:44 -0600 Subject: [PATCH] Cache prefixed scope names --- src/tokenized-buffer-iterator.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/tokenized-buffer-iterator.js b/src/tokenized-buffer-iterator.js index 29d2fdf86..614cb01a9 100644 --- a/src/tokenized-buffer-iterator.js +++ b/src/tokenized-buffer-iterator.js @@ -1,5 +1,7 @@ const {Point} = require('text-buffer') +const prefixedScopes = new Map() + module.exports = class TokenizedBufferIterator { constructor (tokenizedBuffer) { this.tokenizedBuffer = tokenizedBuffer @@ -166,7 +168,15 @@ module.exports = class TokenizedBufferIterator { scopeForId (id) { const scope = this.tokenizedBuffer.grammar.scopeForId(id) if (scope) { - return `syntax--${scope.replace(/\./g, '.syntax--')}` + let prefixedScope = prefixedScopes.get(scope) + if (prefixedScope) { + return prefixedScope + } else { + prefixedScope = `syntax--${scope.replace(/\./g, '.syntax--')}` + prefixedScopes.set(scope, prefixedScope) + return prefixedScope + } + return } else { return null }