Index: src/wp-includes/wp-diff.php
===================================================================
--- src/wp-includes/wp-diff.php	(revision 30395)
+++ src/wp-includes/wp-diff.php	(working copy)
@@ -153,8 +153,25 @@
 	public function _added( $lines, $encode = true ) {
 		$r = '';
 		foreach ($lines as $line) {
-			if ( $encode )
-				$line = htmlspecialchars( $line );
+			if ( $encode ) {
+				$processed_line = htmlspecialchars( $line );
+
+				/**
+				 * Contextually filter a diffed line.
+				 *
+				 * Filters TextDiff processing of diffed line. By default, diffs are processed with
+				 * htmlspecialchars. Use this filter to remove or change the processing. Passes a context
+				 * indicating if the line is added, deleted or unchanged.
+				 *
+				 * @since 4.1.0
+				 *
+				 * @param String $processed_line The processed diffed line.
+				 * @param String $line           The unprocessed diffed line.
+		 		 * @param string null            The line context. Values are 'added', 'deleted' or 'unchanged'.
+				 */
+				$line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'added' );
+			}
+
 			if ( $this->_show_split_view ) {
 				$r .= '<tr>' . $this->emptyLine() . $this->emptyLine() . $this->addedLine( $line ) . "</tr>\n";
 			} else {
@@ -175,8 +192,11 @@
 	public function _deleted( $lines, $encode = true ) {
 		$r = '';
 		foreach ($lines as $line) {
-			if ( $encode )
-				$line = htmlspecialchars( $line );
+			if ( $encode ) {
+				$processed_line = htmlspecialchars( $line );
+				/** This filter is documented in wp-includes/wp-diff.php */
+				$line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'deleted' );
+			}
 			if ( $this->_show_split_view ) {
 				$r .= '<tr>' . $this->deletedLine( $line ) . $this->emptyLine() . $this->emptyLine() . "</tr>\n";
 			} else {
@@ -198,8 +218,11 @@
 	public function _context( $lines, $encode = true ) {
 		$r = '';
 		foreach ($lines as $line) {
-			if ( $encode )
-				$line = htmlspecialchars( $line );
+			if ( $encode ) {
+				$processed_line = htmlspecialchars( $line );
+				/** This filter is documented in wp-includes/wp-diff.php */
+				$line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'unchanged' );
+			}
 			if (  $this->_show_split_view ) {
 				$r .= '<tr>' . $this->contextLine( $line ) . $this->emptyLine() . $this->contextLine( $line )  . "</tr>\n";
 			} else {
Index: src/wp-admin/includes/revision.php
===================================================================
--- src/wp-admin/includes/revision.php	(revision 30395)
+++ src/wp-admin/includes/revision.php	(working copy)
@@ -73,7 +73,28 @@
 		/** This filter is documented in wp-admin/includes/revision.php */
 		$content_to = apply_filters( "_wp_post_revision_field_$field", $compare_to->$field, $field, $compare_to, 'to' );
 
-		$diff = wp_text_diff( $content_from, $content_to, array( 'show_split_view' => true ) );
+		$args = array(
+			'show_split_view' => false
+		);
+		/**
+		 * Filter revisions text diff options.
+		 *
+		 * Filter the options passed to `wp_text_diff()` when viewing a post revision.
+		 *
+		 * @since 4.1.0
+		 *
+		 * @param array   $args {
+		 *     Associative array of options to pass to `wp_text_diff()`.
+		 *
+		 *     @type bool $show_split_view False for split view (two columns), true for
+		 *                                 un-split view (single column). Default false.
+		 * }
+		 * @param string  $field        The current revision field.
+		 * @param WP_Post $compare_from The revision post to compare from.
+		 * @param WP_Post $compare_to   The revision post to compare to.
+		 */
+		$args = apply_filters( 'revision_text_diff_options', $args, $field, $compare_from, $compare_to );
+		$diff = wp_text_diff( $content_from, $content_to, $args );
 
 		if ( ! $diff && 'post_title' === $field ) {
 			// It's a better user experience to still show the Title, even if it didn't change.
