Index: _source/plugins/list/plugin.js
===================================================================
--- _source/plugins/list/plugin.js	(revision 3477)
+++ _source/plugins/list/plugin.js	Fri May 29 11:12:14 CST 2009
@@ -476,38 +476,29 @@
 			for ( i = 0 ; i < listsCreated.length ; i++ )
 			{
 				listNode = listsCreated[i];
+				var mergeSibling;
+				( mergeSibling = CKEDITOR.tools.bind( function( rtl ){
+
-				var stopFlag = false,
-					currentNode = listNode;
+					var stopFlag = false,
+						currentNode = listNode;
-
-				while ( !stopFlag )
-				{
+					while ( !stopFlag )
+					{
-					currentNode = currentNode.getNext();
-					if ( currentNode && currentNode.type == CKEDITOR.NODE_TEXT && emptyTextRegex.test( currentNode.getText() ) )
+						currentNode = currentNode[ rtl ? 'getPrevious' : 'getNext' ].call( currentNode );
+						if ( currentNode && currentNode.type == CKEDITOR.NODE_TEXT &&
+						     emptyTextRegex.test( currentNode.getText() ) )
-						continue;
-					stopFlag = true;
-				}
+							continue;
+						stopFlag = true;
+					}
-
-				if ( currentNode && currentNode.getName() == this.type )
+					if ( currentNode && currentNode.getName &&
+					     currentNode.getName() == this.type )
-				{
-					currentNode.remove();
+					{
+						currentNode.remove();
-					currentNode.moveChildren( listNode );
+						currentNode.moveChildren( listNode, rtl ? true : false );
-				}
+					}
+				}, this ) )();
 
-				stopFlag = false;
-				currentNode = listNode;
-				while ( !stopFlag )
-				{
-					currentNode = currentNode.getNext();
-					if ( currentNode && currentNode.type == CKEDITOR.NODE_TEXT && emptyTextRegex.test( currentNode.getText() ) )
-						continue;
-					stopFlag = true;
+				mergeSibling( true );
-				}
+			}
-				if ( currentNode && currentNode.getName() == this.type  )
-				{
-					currentNode.remove();
-					currentNode.moveChildren( listNode, true );
-				}
-			}
 
 			// Clean up, restore selection and update toolbar button states.
 			CKEDITOR.dom.element.clearAllMarkers( database );
