From 326f3ea0d9747eecdf8eb49759607adc6e7fbae5 Mon Sep 17 00:00:00 2001 From: Eldar Abusalimov Date: Fri, 7 Dec 2018 20:38:32 +0300 Subject: [PATCH] IDEA-177378: Support string escaping chars in registry key description --- .../util/registry/RegistryExtensionCollector.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/util/registry/RegistryExtensionCollector.kt b/platform/platform-impl/src/com/intellij/openapi/util/registry/RegistryExtensionCollector.kt index 7319b10dcb24..7a6ed0722e60 100644 --- a/platform/platform-impl/src/com/intellij/openapi/util/registry/RegistryExtensionCollector.kt +++ b/platform/platform-impl/src/com/intellij/openapi/util/registry/RegistryExtensionCollector.kt @@ -2,6 +2,7 @@ package com.intellij.openapi.util.registry import com.intellij.openapi.extensions.ExtensionPointName +import com.intellij.openapi.util.text.StringUtil import com.intellij.util.xmlb.annotations.Attribute /** @@ -21,7 +22,14 @@ class RegistryKeyBean { class RegistryExtensionCollector { init { for (extension in RegistryKeyBean.EP_NAME.extensions) { - Registry.addKey(extension.key, extension.description, extension.defaultValue, extension.restartRequired) + Registry.addKey(extension.key, extension.description.unescapeString(), extension.defaultValue, extension.restartRequired) } } + + private companion object { + val LINE_CONTINUATION_REGEX = """\\[ \t]+""".toRegex() // the real '\n' after the '\\' is swallowed by the XML reader + + fun String.unescapeString(): String = + if ('\\' !in this) this else StringUtil.unescapeStringCharacters(replace(LINE_CONTINUATION_REGEX, "")) + } }