diff --git a/examples/codeviewer/common/src/commonMain/kotlin/org/jetbrains/codeviewer/ui/editor/EditorView.kt b/examples/codeviewer/common/src/commonMain/kotlin/org/jetbrains/codeviewer/ui/editor/EditorView.kt index a40760a15b..c30bbf0c0e 100644 --- a/examples/codeviewer/common/src/commonMain/kotlin/org/jetbrains/codeviewer/ui/editor/EditorView.kt +++ b/examples/codeviewer/common/src/commonMain/kotlin/org/jetbrains/codeviewer/ui/editor/EditorView.kt @@ -145,41 +145,42 @@ private fun LineContent(content: Editor.Content, modifier: Modifier, settings: S private fun codeString(str: String) = buildAnnotatedString { withStyle(AppTheme.code.simple) { - append(str.replace("\t", " ")) - addStyle(AppTheme.code.punctuation, ":") - addStyle(AppTheme.code.punctuation, "=") - addStyle(AppTheme.code.punctuation, "\"") - addStyle(AppTheme.code.punctuation, "[") - addStyle(AppTheme.code.punctuation, "]") - addStyle(AppTheme.code.punctuation, "{") - addStyle(AppTheme.code.punctuation, "}") - addStyle(AppTheme.code.punctuation, "(") - addStyle(AppTheme.code.punctuation, ")") - addStyle(AppTheme.code.punctuation, ",") - addStyle(AppTheme.code.keyword, "fun ") - addStyle(AppTheme.code.keyword, "val ") - addStyle(AppTheme.code.keyword, "var ") - addStyle(AppTheme.code.keyword, "private ") - addStyle(AppTheme.code.keyword, "internal ") - addStyle(AppTheme.code.keyword, "for ") - addStyle(AppTheme.code.keyword, "expect ") - addStyle(AppTheme.code.keyword, "actual ") - addStyle(AppTheme.code.keyword, "import ") - addStyle(AppTheme.code.keyword, "package ") - addStyle(AppTheme.code.value, "true") - addStyle(AppTheme.code.value, "false") - addStyle(AppTheme.code.value, Regex("[0-9]*")) - addStyle(AppTheme.code.annotation, Regex("^@[a-zA-Z_]*")) - addStyle(AppTheme.code.comment, Regex("^\\s*//.*")) + val strFormatted = str.replace("\t", " ") + append(strFormatted) + addStyle(AppTheme.code.punctuation, strFormatted, ":") + addStyle(AppTheme.code.punctuation, strFormatted, "=") + addStyle(AppTheme.code.punctuation, strFormatted, "\"") + addStyle(AppTheme.code.punctuation, strFormatted, "[") + addStyle(AppTheme.code.punctuation, strFormatted, "]") + addStyle(AppTheme.code.punctuation, strFormatted, "{") + addStyle(AppTheme.code.punctuation, strFormatted, "}") + addStyle(AppTheme.code.punctuation, strFormatted, "(") + addStyle(AppTheme.code.punctuation, strFormatted, ")") + addStyle(AppTheme.code.punctuation, strFormatted, ",") + addStyle(AppTheme.code.keyword, strFormatted, "fun ") + addStyle(AppTheme.code.keyword, strFormatted, "val ") + addStyle(AppTheme.code.keyword, strFormatted, "var ") + addStyle(AppTheme.code.keyword, strFormatted, "private ") + addStyle(AppTheme.code.keyword, strFormatted, "internal ") + addStyle(AppTheme.code.keyword, strFormatted, "for ") + addStyle(AppTheme.code.keyword, strFormatted, "expect ") + addStyle(AppTheme.code.keyword, strFormatted, "actual ") + addStyle(AppTheme.code.keyword, strFormatted, "import ") + addStyle(AppTheme.code.keyword, strFormatted, "package ") + addStyle(AppTheme.code.value, strFormatted, "true") + addStyle(AppTheme.code.value, strFormatted, "false") + addStyle(AppTheme.code.value, strFormatted, Regex("[0-9]*")) + addStyle(AppTheme.code.annotation, strFormatted, Regex("^@[a-zA-Z_]*")) + addStyle(AppTheme.code.comment, strFormatted, Regex("^\\s*//.*")) } } -private fun AnnotatedString.Builder.addStyle(style: SpanStyle, regexp: String) { - addStyle(style, fromLiteral(regexp)) +private fun AnnotatedString.Builder.addStyle(style: SpanStyle, text: String, regexp: String) { + addStyle(style, text, fromLiteral(regexp)) } -private fun AnnotatedString.Builder.addStyle(style: SpanStyle, regexp: Regex) { - for (result in regexp.findAll(toString())) { +private fun AnnotatedString.Builder.addStyle(style: SpanStyle, text: String, regexp: Regex) { + for (result in regexp.findAll(text)) { addStyle(style, result.range.first, result.range.last + 1) } } \ No newline at end of file