fix(jbm): do not include entire code blocks in single line mode

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2024-12-12 01:11:34 +01:00
parent f47b21aeec
commit 498338d9de
2 changed files with 30 additions and 1 deletions

View File

@ -877,7 +877,32 @@ private fun JBMBlock(node: ASTNode, modifier: Modifier, nestingCounter: Int = 0)
}
MarkdownElementTypes.CODE_FENCE -> {
JBMCodeBlockContent(node, modifier)
if (LocalJBMarkdownTreeState.current.singleLine) {
Text(
text = buildAnnotatedString {
withStyle(SpanStyle(fontFamily = FragmentMono)) {
val codeFenceLanguage =
node.children.firstOrNull { it.type == MarkdownTokenTypes.FENCE_LANG }
?.getTextInNode(state.sourceText)?.toString()
val languageName = languageDisplayNamedResource[
languageAliases[codeFenceLanguage]
?: SyntaxLanguage.getByName(codeFenceLanguage ?: "")
]?.let {
stringResource(it)
}
append(languageName?.let {
stringResource(R.string.programming_language_snippet, it)
} ?: stringResource(R.string.programming_language_snippet_default))
}
},
maxLines = if (state.singleLine) 1 else Int.MAX_VALUE,
overflow = if (state.singleLine) TextOverflow.Ellipsis else TextOverflow.Clip,
modifier = modifier
)
} else {
JBMCodeBlockContent(node, modifier)
}
}
MarkdownElementTypes.BLOCK_QUOTE -> {

View File

@ -308,6 +308,10 @@
<string name="programming_language_go" translatable="false">Go</string>
<string name="programming_language_php" translatable="false">PHP</string>
<!-- Used to describe a snippet of code in a specific programming language -->
<string name="programming_language_snippet">[%1$s snippet]</string>
<string name="programming_language_snippet_default">[Code snippet]</string>
<string name="server_flag_official">Official Server</string>
<string name="server_flag_verified">Verified Server</string>