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",
"plist": "^3.0.4",
"popper.js": "^1.16.1",
"prismjs": "^1.25.0",
"prismjs": "^1.26.0",
"snabbdom": "^0.7.4",
"snabbdom-to-html": "^6.0.0",
"source-map-support": "^0.5.21",

View File

@ -33,6 +33,7 @@ export const transfromAliasToOrigin = langs => {
}
}
}
return result
}
@ -40,9 +41,7 @@ function initLoadLanguage (Prism) {
return async function loadLanguages (langs) {
// If no argument is passed, load all components
if (!langs) {
langs = Object.keys(languages).filter(function (lang) {
return lang !== 'meta'
})
langs = Object.keys(languages).filter(lang => lang !== 'meta')
}
if (langs && !langs.length) {
@ -54,8 +53,8 @@ function initLoadLanguage (Prism) {
}
const promises = []
// 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
// 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
const loaded = [...loadedLanguages, ...Object.keys(Prism.languages)]
getLoader(components, langs, loaded).load(async lang => {
@ -66,17 +65,20 @@ function initLoadLanguage (Prism) {
lang,
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: loadedLanguages.has(lang) ? 'cached' : 'loaded'
status: 'loaded'
})
loadedLanguages.add(lang)
}
})
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
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.
const turnSoftBreakToSpan = html => {
const parser = new DOMParser()
@ -95,7 +97,6 @@ const importRegister = ContentState => {
let block
let value
const parentList = [rootState]
const languageLoaded = new Set()
while ((token = tokens.shift())) {
switch (token.type) {
@ -420,7 +421,7 @@ const importRegister = ContentState => {
break
}
}
languageLoaded.clear()
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"
react-is "^17.0.1"
prismjs@^1.25.0:
version "1.25.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756"
integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==
prismjs@^1.26.0:
version "1.26.0"
resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.26.0.tgz#16881b594828bb6b45296083a8cbab46b0accd47"
integrity sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ==
private@^0.1.8, private@~0.1.5:
version "0.1.8"