From b977efc95ca923ccd1a8f6928ba65b40d366e0e2 Mon Sep 17 00:00:00 2001
From: rabuzarus <>
Date: Fri, 17 Jun 2016 15:29:01 +0200
Subject: [PATCH] code highlight - some spacing for readability

---
 include/text.php | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/include/text.php b/include/text.php
index 16c0845ac..9b34b0884 100644
--- a/include/text.php
+++ b/include/text.php
@@ -2097,33 +2097,44 @@ function format_network_name($network, $url = 0) {
 function text_highlight($s,$lang) {
 	if($lang === 'js')
 		$lang = 'javascript';
+
 	if(! strpos('Text_Highlighter',get_include_path())) {
 		set_include_path(get_include_path() . PATH_SEPARATOR . 'library/Text_Highlighter');
 	}
+
 	require_once('library/Text_Highlighter/Text/Highlighter.php');
 	require_once('library/Text_Highlighter/Text/Highlighter/Renderer/Html.php');
 	$options = array(
 		'numbers' => HL_NUMBERS_LI,
 		'tabsize' => 4,
 		);
+
 	$tag_added = false;
 	$s = trim(html_entity_decode($s,ENT_COMPAT));
 	$s = str_replace("    ","\t",$s);
+
+	// The highlighter library insists on an opening php tag for php code blocks. If 
+	// it isn't present, nothing is highlighted. So we're going to see if it's present.
+	// If not, we'll add it, and then quietly remove it after we get the processed output back.
+
 	if($lang === 'php') {
 		if(strpos('<?php',$s) !== 0) {
 			$s = '<?php' . "\n" . $s;
-			$tag_added = true;			
+			$tag_added = true;
 		}
 	} 
+
 	$renderer = new Text_Highlighter_Renderer_HTML($options);
 	$hl = Text_Highlighter::factory($lang);
 	$hl->setRenderer($renderer);
-		$o = $hl->highlight($s);
-		$o = str_replace(["    ","\n"],["&nbsp;&nbsp;&nbsp;&nbsp;",''],$o);
-		if($tag_added) {
-			$b = substr($o,0,strpos($o,'<li>'));
-			$e = substr($o,strpos($o,'</li>'));
-			$o = $b . $e;
-		}
+	$o = $hl->highlight($s);
+	$o = str_replace(["    ","\n"],["&nbsp;&nbsp;&nbsp;&nbsp;",''],$o);
+
+	if($tag_added) {
+		$b = substr($o,0,strpos($o,'<li>'));
+		$e = substr($o,strpos($o,'</li>'));
+		$o = $b . $e;
+	}
+
 	return('<code>' . $o . '</code>');
 }