From c25da5cc2de4e6f96b3a0a2813050355a20dd0e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tinjo=20Sch=C3=B6ni?= <32767367+tscni@users.noreply.github.com> Date: Sun, 9 Jun 2024 20:42:34 +0200 Subject: [PATCH] [ErrorHandler] Fix rendered exception code highlighting on PHP 8.3 --- ErrorRenderer/HtmlErrorRenderer.php | 8 +++----- Resources/assets/css/exception.css | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ErrorRenderer/HtmlErrorRenderer.php b/ErrorRenderer/HtmlErrorRenderer.php index 5b264fa..05cbeec 100644 --- a/ErrorRenderer/HtmlErrorRenderer.php +++ b/ErrorRenderer/HtmlErrorRenderer.php @@ -274,12 +274,10 @@ private function fileExcerpt(string $file, int $line, int $srcContext = 3): stri if (\PHP_VERSION_ID >= 80300) { // remove main pre/code tags $code = preg_replace('#^\s*(.*)\s*#s', '\\1', $code); - // split multiline code tags - $code = preg_replace_callback('#]++)>((?:[^<]*+\\n)++[^<]*+)#', function ($m) { - return "".str_replace("\n", "\n", $m[2]).''; + // split multiline span tags + $code = preg_replace_callback('#]++)>((?:[^<\\n]*+\\n)++[^<]*+)#', function ($m) { + return "".str_replace("\n", "\n", $m[2]).''; }, $code); - // Convert spaces to html entities to preserve indentation when rendered - $code = str_replace(' ', ' ', $code); $content = explode("\n", $code); } else { // remove main code/span tags diff --git a/Resources/assets/css/exception.css b/Resources/assets/css/exception.css index 7cb3206..2d05a5e 100644 --- a/Resources/assets/css/exception.css +++ b/Resources/assets/css/exception.css @@ -242,7 +242,7 @@ header .container { display: flex; justify-content: space-between; } .trace-code li { color: #969896; margin: 0; padding-left: 10px; float: left; width: 100%; } .trace-code li + li { margin-top: 5px; } .trace-code li.selected { background: var(--trace-selected-background); margin-top: 2px; } -.trace-code li code { color: var(--base-6); white-space: nowrap; } +.trace-code li code { color: var(--base-6); white-space: pre; } .trace-as-text .stacktrace { line-height: 1.8; margin: 0 0 15px; white-space: pre-wrap; }