Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 7218)
+++ /CKEditor/trunk/CHANGES.html	(revision 7219)
@@ -67,4 +67,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/8159">#8159</a> : Editor fails to load if the browser has no default language set.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/7490">#7490</a> : [IE] Block format leaks to the next unselected line in BR enter mode.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/8087">#8087</a> : Indent list items may adds redundant text direction.</li>
 		<li>Updated the following language files:<ul>
 			<li><a href="http://dev.ckeditor.com/ticket/8128">#8128</a> : Italian;</li>
Index: /CKEditor/trunk/_source/plugins/indent/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/indent/plugin.js	(revision 7218)
+++ /CKEditor/trunk/_source/plugins/indent/plugin.js	(revision 7219)
@@ -81,5 +81,5 @@
 	function isListItem( node )
 	{
-		return node.type = CKEDITOR.NODE_ELEMENT && node.is( 'li' );
+		return node.type == CKEDITOR.NODE_ELEMENT && node.is( 'li' );
 	}
 
Index: /CKEditor/trunk/_source/plugins/list/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/list/plugin.js	(revision 7218)
+++ /CKEditor/trunk/_source/plugins/list/plugin.js	(revision 7219)
@@ -16,4 +16,24 @@
 		bookmarks = CKEDITOR.dom.walker.bookmark(),
 		nonEmpty = function( node ){ return !( whitespaces( node ) || bookmarks( node ) ); };
+
+	function inheritedDirection( element )
+	{
+		var dir;
+		while ( element && !( dir = element.getDirection() ) )
+		{
+			element = element.getParent();
+		}
+		return dir;
+	}
+	
+	function cleanUpDirection( element, rootDir )
+	{
+		var dir;
+		if ( dir = element.getDirection() )
+		{
+			if ( dir == ( inheritedDirection( element.getParent() ) || rootDir ) )
+				element.removeAttribute( 'dir' );
+		}
+	}
 
 	CKEDITOR.plugins.list = {
@@ -108,6 +128,4 @@
 					if ( orgDir != rootNode.getDirection( 1 ) )
 						currentListItem.setAttribute( 'dir', orgDir );
-					else
-						currentListItem.removeAttribute( 'dir' );
 
 					for ( var i = 0 ; i < item.contents.length ; i++ )
@@ -156,6 +174,4 @@
 						if ( item.grandparent.getDirection( 1 ) != orgDir )
 							currentListItem.setAttribute( 'dir', orgDir );
-						else
-							currentListItem.removeAttribute( 'dir' );
 					}
 
@@ -209,12 +225,21 @@
 			}
 
-			// Clear marker attributes for the new list tree made of cloned nodes, if any.
 			if ( database )
 			{
-				var currentNode = retval.getFirst();
+				var currentNode = retval.getFirst(),
+					listRoot = listArray[ 0 ].parent;
+
 				while ( currentNode )
 				{
 					if ( currentNode.type == CKEDITOR.NODE_ELEMENT )
+					{
+						// Clear marker attributes for the new list tree made of cloned nodes, if any.
 						CKEDITOR.dom.element.clearMarkers( database, currentNode );
+
+						// Clear redundant direction attribute specified on list items.
+						if ( currentNode.getName() in CKEDITOR.dtd.$listItem )
+							cleanUpDirection( currentNode, listRoot.getDirection( 1 ) );
+					}
+
 					currentNode = currentNode.getNextSourceNode();
 				}
