From 450f07508a3135511ece17652f3b483ea59d9a17 Mon Sep 17 00:00:00 2001 From: Ilia Permiashkin Date: Tue, 21 Jul 2026 12:53:14 +0000 Subject: [PATCH] [markdown] IJPL-249952 Update Markdown version Merge-request: IJ-MR-214503 Merged-by: Ilia Permiashkin GitOrigin-RevId: eab63c900607a26cb31edf8bdbca788843f3a1e0 --- .idea/libraries/jetbrains_markdown.xml | 10 +++++----- lib/BUILD.bazel | 10 +++++----- lib/MODULE.bazel | 16 ++++++++-------- .../lang/parser/MarkdownParserManager.kt | 4 +--- .../blocks/DefinitionListMarkerProvider.kt | 2 +- .../blocks/frontmatter/FrontMatterHeaderBlock.kt | 4 ++-- .../FrontMatterHeaderMarkerProvider.kt | 16 ++++++++-------- .../preview/html/FootnoteGeneratingProvider.kt | 15 +++++++++++++-- .../markdown/ui/preview/html/MarkdownUtil.kt | 9 ++++++++- 9 files changed, 51 insertions(+), 35 deletions(-) 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)