diff --git a/packages/@vuepress/markdown/lib/highlightLines.js b/packages/@vuepress/markdown/lib/highlightLines.js index c98dcc8e00..99b7d59846 100644 --- a/packages/@vuepress/markdown/lib/highlightLines.js +++ b/packages/@vuepress/markdown/lib/highlightLines.js @@ -9,27 +9,29 @@ module.exports = md => { const [tokens, idx, options] = args const token = tokens[idx] - const rawInfo = token.info - if (!rawInfo || !RE.test(rawInfo)) { - return fence(...args) - } + if (!token.lineNumbers) { + const rawInfo = token.info + if (!rawInfo || !RE.test(rawInfo)) { + return fence(...args) + } - const langName = rawInfo.replace(RE, '').trim() - // ensure the next plugin get the correct lang. - token.info = langName + const langName = rawInfo.replace(RE, '').trim() + // ensure the next plugin get the correct lang. + token.info = langName - const lineNumbers = RE.exec(rawInfo)[1] - .split(',') - .map(v => v.split('-').map(v => parseInt(v, 10))) + token.lineNumbers = RE.exec(rawInfo)[1] + .split(',') + .map(v => v.split('-').map(v => parseInt(v, 10))) + } const code = options.highlight - ? options.highlight(token.content, langName) + ? options.highlight(token.content, token.info) : token.content const rawCode = code.replace(wrapperRE, '') const highlightLinesCode = rawCode.split('\n').map((split, index) => { const lineNumber = index + 1 - const inRange = lineNumbers.some(([start, end]) => { + const inRange = token.lineNumbers.some(([start, end]) => { if (start && end) { return lineNumber >= start && lineNumber <= end }