fix: #2854 codeblock highlight error (#2877)

This commit is contained in:
Ran Luo 2022-01-13 12:59:57 +08:00 committed by GitHub
parent 881e0c44e6
commit d24a578a1a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 22 deletions

View File

@ -71,7 +71,7 @@
"minizlib": "^2.1.1", "minizlib": "^2.1.1",
"plist": "^3.0.4", "plist": "^3.0.4",
"popper.js": "^1.16.1", "popper.js": "^1.16.1",
"prismjs": "^1.25.0", "prismjs": "^1.26.0",
"snabbdom": "^0.7.4", "snabbdom": "^0.7.4",
"snabbdom-to-html": "^6.0.0", "snabbdom-to-html": "^6.0.0",
"source-map-support": "^0.5.21", "source-map-support": "^0.5.21",

View File

@ -33,6 +33,7 @@ export const transfromAliasToOrigin = langs => {
} }
} }
} }
return result return result
} }
@ -40,9 +41,7 @@ function initLoadLanguage (Prism) {
return async function loadLanguages (langs) { return async function loadLanguages (langs) {
// If no argument is passed, load all components // If no argument is passed, load all components
if (!langs) { if (!langs) {
langs = Object.keys(languages).filter(function (lang) { langs = Object.keys(languages).filter(lang => lang !== 'meta')
return lang !== 'meta'
})
} }
if (langs && !langs.length) { if (langs && !langs.length) {
@ -54,8 +53,8 @@ function initLoadLanguage (Prism) {
} }
const promises = [] const promises = []
// the user might have loaded languages via some other way or used `prism.js` which already includes some // The user might have loaded languages via some other way or used `prism.js` which already includes some
// we don't need to validate the ids because `getLoader` will ignore invalid ones // We don't need to validate the ids because `getLoader` will ignore invalid ones
const loaded = [...loadedLanguages, ...Object.keys(Prism.languages)] const loaded = [...loadedLanguages, ...Object.keys(Prism.languages)]
getLoader(components, langs, loaded).load(async lang => { getLoader(components, langs, loaded).load(async lang => {
@ -66,17 +65,20 @@ function initLoadLanguage (Prism) {
lang, lang,
status: 'noexist' status: 'noexist'
}) })
return } else if (loadedLanguages.has(lang)) {
defer.resolve({
lang,
status: 'cached'
})
} else {
delete Prism.languages[lang]
await import('prismjs/components/prism-' + lang)
defer.resolve({
lang,
status: 'loaded'
})
loadedLanguages.add(lang)
} }
delete Prism.languages[lang]
await import('prismjs/components/prism-' + lang)
defer.resolve({
lang,
status: loadedLanguages.has(lang) ? 'cached' : 'loaded'
})
loadedLanguages.add(lang)
}) })
return Promise.all(promises) return Promise.all(promises)

View File

@ -14,6 +14,8 @@ import { loadLanguage } from '../prism/index'
// To be disabled rules when parse markdown, Because content state don't need to parse inline rules // To be disabled rules when parse markdown, Because content state don't need to parse inline rules
import { CURSOR_ANCHOR_DNA, CURSOR_FOCUS_DNA } from '../config' import { CURSOR_ANCHOR_DNA, CURSOR_FOCUS_DNA } from '../config'
const languageLoaded = new Set()
// Just because turndown change `\n`(soft line break) to space, So we add `span.ag-soft-line-break` to workaround. // Just because turndown change `\n`(soft line break) to space, So we add `span.ag-soft-line-break` to workaround.
const turnSoftBreakToSpan = html => { const turnSoftBreakToSpan = html => {
const parser = new DOMParser() const parser = new DOMParser()
@ -95,7 +97,6 @@ const importRegister = ContentState => {
let block let block
let value let value
const parentList = [rootState] const parentList = [rootState]
const languageLoaded = new Set()
while ((token = tokens.shift())) { while ((token = tokens.shift())) {
switch (token.type) { switch (token.type) {
@ -420,7 +421,7 @@ const importRegister = ContentState => {
break break
} }
} }
languageLoaded.clear()
return rootState.children.length ? rootState.children : [this.createBlockP()] return rootState.children.length ? rootState.children : [this.createBlockP()]
} }

View File

@ -10144,10 +10144,10 @@ pretty-format@^27.2.5, pretty-format@^27.4.2:
ansi-styles "^5.0.0" ansi-styles "^5.0.0"
react-is "^17.0.1" react-is "^17.0.1"
prismjs@^1.25.0: prismjs@^1.26.0:
version "1.25.0" version "1.26.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.26.0.tgz#16881b594828bb6b45296083a8cbab46b0accd47"
integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== integrity sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ==
private@^0.1.8, private@~0.1.5: private@^0.1.8, private@~0.1.5:
version "0.1.8" version "0.1.8"