diff --git a/.idea/libraries/jetbrains_markdown.xml b/.idea/libraries/jetbrains_markdown.xml
index 41e3dca001b4..55fab5e637b4 100644
--- a/.idea/libraries/jetbrains_markdown.xml
+++ b/.idea/libraries/jetbrains_markdown.xml
@@ -1,9 +1,9 @@
-
+
-
- d4f3df73b2bab29a02f09114fe270ad63d0581da524a0db37df827c8d8f27f1c
+
+ df0b88266501c622ffcd0cc174b29aed9e19e73cb93e0d51b4ebca4cee01a82f
@@ -12,11 +12,11 @@
-
+
-
+
\ No newline at end of file
diff --git a/lib/BUILD.bazel b/lib/BUILD.bazel
index b937a6e57081..dc5eb596b1b1 100644
--- a/lib/BUILD.bazel
+++ b/lib/BUILD.bazel
@@ -7184,17 +7184,17 @@ jvm_import(
)
copy_file(
- name = "org.jetbrains/markdown-jvm-0.7.5.jar_copy",
- src = "@org_jetbrains-markdown-jvm-0_7_5_http//file",
- out = "org.jetbrains/markdown-jvm-0.7.5.jar",
+ name = "org.jetbrains/markdown-jvm-0.7.7.jar_copy",
+ src = "@org_jetbrains-markdown-jvm-0_7_7_http//file",
+ out = "org.jetbrains/markdown-jvm-0.7.7.jar",
allow_symlink = True,
visibility = ["//visibility:public"],
)
jvm_import(
name = "jetbrains-markdown",
- jar = "@org_jetbrains-markdown-jvm-0_7_5_http//file",
- source_jar = "@org_jetbrains-markdown-jvm-0_7_5-sources_http//file",
+ jar = "@org_jetbrains-markdown-jvm-0_7_7_http//file",
+ source_jar = "@org_jetbrains-markdown-jvm-0_7_7-sources_http//file",
visibility = ["//visibility:public"],
)
diff --git a/lib/MODULE.bazel b/lib/MODULE.bazel
index 4765fa6b68cc..9b15ef886c43 100644
--- a/lib/MODULE.bazel
+++ b/lib/MODULE.bazel
@@ -5699,17 +5699,17 @@ http_file(
)
http_file(
- name = "org_jetbrains-markdown-jvm-0_7_5_http",
- downloaded_file_path = "markdown-jvm-0.7.5.jar",
- sha256 = "d4f3df73b2bab29a02f09114fe270ad63d0581da524a0db37df827c8d8f27f1c",
- url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/jetbrains/markdown-jvm/0.7.5/markdown-jvm-0.7.5.jar",
+ name = "org_jetbrains-markdown-jvm-0_7_7_http",
+ downloaded_file_path = "markdown-jvm-0.7.7.jar",
+ sha256 = "df0b88266501c622ffcd0cc174b29aed9e19e73cb93e0d51b4ebca4cee01a82f",
+ url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/jetbrains/markdown-jvm/0.7.7/markdown-jvm-0.7.7.jar",
)
http_file(
- name = "org_jetbrains-markdown-jvm-0_7_5-sources_http",
- downloaded_file_path = "markdown-jvm-0.7.5-sources.jar",
- sha256 = "bc6c9ea9f4a8c75578ebb7488e29254e16f6f405ef44ea6b3c6d334f5b44ef04",
- url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/jetbrains/markdown-jvm/0.7.5/markdown-jvm-0.7.5-sources.jar",
+ name = "org_jetbrains-markdown-jvm-0_7_7-sources_http",
+ downloaded_file_path = "markdown-jvm-0.7.7-sources.jar",
+ sha256 = "e6a3f6346e183af31797952b095b7337f3973aff075cc4e8352ecdb90f372869",
+ url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/jetbrains/markdown-jvm/0.7.7/markdown-jvm-0.7.7-sources.jar",
)
http_file(
diff --git a/plugins/markdown/core/src/org/intellij/plugins/markdown/lang/parser/MarkdownParserManager.kt b/plugins/markdown/core/src/org/intellij/plugins/markdown/lang/parser/MarkdownParserManager.kt
index 578c3d175aa5..3503c95d9b33 100644
--- a/plugins/markdown/core/src/org/intellij/plugins/markdown/lang/parser/MarkdownParserManager.kt
+++ b/plugins/markdown/core/src/org/intellij/plugins/markdown/lang/parser/MarkdownParserManager.kt
@@ -7,7 +7,6 @@ import com.intellij.openapi.components.service
import com.intellij.openapi.progress.ProgressManager
import com.intellij.openapi.util.Key
import com.intellij.openapi.util.text.StringUtil.BombedCharSequence
-import org.intellij.markdown.ExperimentalApi
import org.intellij.markdown.MarkdownElementTypes
import org.intellij.markdown.ast.ASTNode
import org.intellij.markdown.flavours.MarkdownFlavourDescriptor
@@ -42,7 +41,7 @@ class MarkdownParserManager: Disposable {
}
val parseResult = createMarkdownParser(flavour).parse(
MarkdownElementTypes.MARKDOWN_FILE,
- buffer.toString(),
+ buffer,
parseInlines = false
)
lastParsingResult.set(SoftReference(ParsingResult(buffer, parseResult)))
@@ -67,7 +66,6 @@ class MarkdownParserManager: Disposable {
}
@JvmStatic
- @OptIn(ExperimentalApi::class)
fun createMarkdownParser(flavour: MarkdownFlavourDescriptor, assertionsEnabled: Boolean = true): MarkdownParser =
MarkdownParser(flavour, assertionsEnabled) { ProgressManager.checkCanceled() }
diff --git a/plugins/markdown/core/src/org/intellij/plugins/markdown/lang/parser/blocks/DefinitionListMarkerProvider.kt b/plugins/markdown/core/src/org/intellij/plugins/markdown/lang/parser/blocks/DefinitionListMarkerProvider.kt
index 3e900ad93f72..afbb8709c60e 100644
--- a/plugins/markdown/core/src/org/intellij/plugins/markdown/lang/parser/blocks/DefinitionListMarkerProvider.kt
+++ b/plugins/markdown/core/src/org/intellij/plugins/markdown/lang/parser/blocks/DefinitionListMarkerProvider.kt
@@ -42,7 +42,7 @@ class DefinitionListMarkerProvider: MarkerBlockProvider= 3 && line.all { it == '-' }
}
- internal fun canBePairedWithClosingDots(opening: String): Boolean {
+ internal fun canBePairedWithClosingDots(opening: CharSequence): Boolean {
return isYamlDashedDelimiterLine(opening)
}
- private fun isYamlDottedDelimiterLine(line: String): Boolean {
+ private fun isYamlDottedDelimiterLine(line: CharSequence): Boolean {
return line.length >= 3 && line.all { it == '.' }
}
- internal fun isYamlDelimiters(opening: String, closing: String): Boolean {
+ internal fun isYamlDelimiters(opening: CharSequence, closing: CharSequence): Boolean {
return isYamlDashedDelimiterLine(opening) && (isYamlDashedDelimiterLine(closing) || isYamlDottedDelimiterLine(closing))
}
- private fun isTomlDelimiterLine(line: String): Boolean {
+ private fun isTomlDelimiterLine(line: CharSequence): Boolean {
return line.length >= 3 && line.all { it == '+' }
}
- internal fun isTomlDelimiters(opening: String, closing: String): Boolean {
+ internal fun isTomlDelimiters(opening: CharSequence, closing: CharSequence): Boolean {
return isTomlDelimiterLine(opening) && isTomlDelimiterLine(closing)
}
}
diff --git a/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/html/FootnoteGeneratingProvider.kt b/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/html/FootnoteGeneratingProvider.kt
index 5a211855267d..158df35429bf 100644
--- a/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/html/FootnoteGeneratingProvider.kt
+++ b/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/html/FootnoteGeneratingProvider.kt
@@ -2,6 +2,7 @@
package org.intellij.plugins.markdown.ui.preview.html
import com.intellij.openapi.progress.ProgressManager
+import com.intellij.openapi.util.text.StringUtil.BombedCharSequence
import org.intellij.markdown.MarkdownElementTypes
import org.intellij.markdown.MarkdownTokenTypes
import org.intellij.markdown.ast.ASTNode
@@ -62,7 +63,12 @@ internal class FootnoteMap private constructor(
private fun renderBodyMarkdown(body: String, baseUri: URI?, fullMap: FootnoteMap? = null): String {
val content = if (body.endsWith('\n')) body else "$body\n"
- val parsedTree = MarkdownParserManager.createMarkdownParser(MarkdownParserManager.FLAVOUR).buildMarkdownTreeFromString(content)
+ val parsedTree = MarkdownParserManager.createMarkdownParser(MarkdownParserManager.FLAVOUR)
+ .buildMarkdownTreeFromString(object : BombedCharSequence(content) {
+ override fun checkCanceled() {
+ ProgressManager.checkCanceled()
+ }
+ })
val linkMap = LinkMap.buildLinkMap(parsedTree, content)
val providers = MarkdownParserManager.FLAVOUR.createHtmlGeneratingProviders(linkMap, baseUri).toMutableMap()
if (fullMap != null) {
@@ -220,7 +226,12 @@ internal class FootnoteMap private constructor(
processed.add(label)
val body = definitions[label]!!
val content = if (body.endsWith('\n')) body else "$body\n"
- val bodyTree = MarkdownParserManager.createMarkdownParser(MarkdownParserManager.FLAVOUR).buildMarkdownTreeFromString(content)
+ val bodyTree = MarkdownParserManager.createMarkdownParser(MarkdownParserManager.FLAVOUR)
+ .buildMarkdownTreeFromString(object : BombedCharSequence(content) {
+ override fun checkCanceled() {
+ ProgressManager.checkCanceled()
+ }
+ })
val nestedDefs = mutableMapOf()
val nestedRefs = mutableListOf()
collectFromAst(bodyTree, content, nestedDefs, mutableSetOf(), nestedRefs)
diff --git a/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/html/MarkdownUtil.kt b/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/html/MarkdownUtil.kt
index ae67b0e7b564..db62f2b3f82c 100644
--- a/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/html/MarkdownUtil.kt
+++ b/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/html/MarkdownUtil.kt
@@ -1,7 +1,9 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.intellij.plugins.markdown.ui.preview.html
+import com.intellij.openapi.progress.ProgressManager
import com.intellij.openapi.project.Project
+import com.intellij.openapi.util.text.StringUtil.BombedCharSequence
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.util.io.DigestUtil
import org.intellij.markdown.MarkdownElementTypes
@@ -33,7 +35,12 @@ object MarkdownUtil {
val parent = file.parent
val baseUri = if (parent != null) File(parent.path).toURI() else null
- val parsedTree = MarkdownParserManager.createMarkdownParser(MarkdownParserManager.FLAVOUR).buildMarkdownTreeFromString(text)
+ val parsedTree = MarkdownParserManager.createMarkdownParser(MarkdownParserManager.FLAVOUR)
+ .buildMarkdownTreeFromString(object : BombedCharSequence(text) {
+ override fun checkCanceled() {
+ ProgressManager.checkCanceled()
+ }
+ })
val cacheCollector = MarkdownCodeFencePluginCacheCollector(file)
val linkMap = LinkMap.buildLinkMap(parsedTree, text)