public/ckeditor/4.4dev/plugins/indent/plugin.js
function( editor, commands ) {
			editor.on( 'pluginsLoaded', function() {
				for ( var name in commands ) {
					( function( editor, command ) {
						var relatedGlobal = editor.getCommand( command.relatedGlobal );

						for ( var priority in command.jobs ) {
							// Observe generic exec event and execute command when necessary.
							// If the command was successfully handled by the command and
							// DOM has been modified, stop event propagation so no other plugin
							// will bother. Job is done.
							relatedGlobal.on( 'exec', function( evt ) {
								if ( evt.data.done )
									return;

								// Make sure that anything this command will do is invisible
								// for undoManager. What undoManager only can see and
								// remember is the execution of the global command (relatedGlobal).
								editor.fire( 'lockSnapshot' );

								if ( command.execJob( editor, priority ) )
									evt.data.done = true;

								editor.fire( 'unlockSnapshot' );

								// Clean up the markers.
								CKEDITOR.dom.element.clearAllMarkers( command.database );
							}, this, null, priority );

							// Observe generic refresh event and force command refresh.
							// Once refreshed, save command state in event data
							// so generic command plugin can update its own state and UI.
							relatedGlobal.on( 'refresh', function( evt ) {
								if ( !evt.data.states )
									evt.data.states = {};

								evt.data.states[ command.name + '@' + priority ] =
									command.refreshJob( editor, priority, evt.data.path );
							}, this, null, priority );
						}

						// Since specific indent commands have no UI elements,
						// they need to be manually registered as a editor feature.
						editor.addFeature( command );
					} )( this, commands[ name ] );
				}
			} );
		}
function( editor, commands ) {
			editor.on( 'pluginsLoaded', function() {
				for ( var name in commands ) {
					( function( editor, command ) {
						var relatedGlobal = editor.getCommand( command.relatedGlobal );

						for ( var priority in command.jobs ) {
							// Observe generic exec event and execute command when necessary.
							// If the command was successfully handled by the command and
							// DOM has been modified, stop event propagation so no other plugin
							// will bother. Job is done.
							relatedGlobal.on( 'exec', function( evt ) {
								if ( evt.data.done )
									return;

								// Make sure that anything this command will do is invisible
								// for undoManager. What undoManager only can see and
								// remember is the execution of the global command (relatedGlobal).
								editor.fire( 'lockSnapshot' );

								if ( command.execJob( editor, priority ) )
									evt.data.done = true;

								editor.fire( 'unlockSnapshot' );

								// Clean up the markers.
								CKEDITOR.dom.element.clearAllMarkers( command.database );
							}, this, null, priority );

							// Observe generic refresh event and force command refresh.
							// Once refreshed, save command state in event data
							// so generic command plugin can update its own state and UI.
							relatedGlobal.on( 'refresh', function( evt ) {
								if ( !evt.data.states )
									evt.data.states = {};

								evt.data.states[ command.name + '@' + priority ] =
									command.refreshJob( editor, priority, evt.data.path );
							}, this, null, priority );
						}

						// Since specific indent commands have no UI elements,
						// they need to be manually registered as a editor feature.
						editor.addFeature( command );
					} )( this, commands[ name ] );
				}
			} );
		}
function ( editor , commands ) { editor . on ( 'pluginsLoaded' , function ( ) { for ( var name in commands ) { ( function ( editor , command ) { var relatedGlobal = editor . getCommand ( command . relatedGlobal ) ; for ( var priority in command . jobs ) { // Observe generic exec event and execute command when necessary.
 // If the command was successfully handled by the command and
 // DOM has been modified, stop event propagation so no other plugin
 // will bother. Job is done.
 relatedGlobal . on ( 'exec' , function ( evt ) { if ( evt . data . done ) return ; // Make sure that anything this command will do is invisible
 // for undoManager. What undoManager only can see and
 // remember is the execution of the global command (relatedGlobal).
 editor . fire ( 'lockSnapshot' ) ; if ( command . execJob ( editor , priority ) ) evt . data . done = true ; editor . fire ( 'unlockSnapshot' ) ; // Clean up the markers.
 CKEDITOR . dom . element . clearAllMarkers ( command . database ) ; } , this , null , priority ) ; // Observe generic refresh event and force command refresh.
 // Once refreshed, save command state in event data
 // so generic command plugin can update its own state and UI.
 relatedGlobal . on ( 'refresh' , function ( evt ) { if ( ! evt . data . states ) evt . data . states = { } ; evt . data . states [ command . name + '@' + priority ] = command . refreshJob ( editor , priority , evt . data . path ) ; } , this , null , priority ) ; } // Since specific indent commands have no UI elements,
 // they need to be manually registered as a editor feature.
 editor . addFeature ( command ) ; } ) ( this , commands [ name ] ) ; } } ) ; }
Registers content-specific commands as a part of the indentation system
directed by generic commands. Once a command is registered,
it listens for events of a related generic command.

CKEDITOR.plugins.indent.registerCommands( editor, {
'indentlist': new indentListCommand( editor, 'indentlist' ),
'outdentlist': new indentListCommand( editor, 'outdentlist' )
} );

Content-specific commands listen for the generic command's `exec` and
try to execute their own jobs, one after another. If some execution is
successful, `evt.data.done` is set so no more jobs (commands) are involved.

Content-specific commands also listen for the generic command's `refresh`
and fill the `evt.data.states` object with states of jobs. A generic command
uses this data to determine its own state and to update the UI.

@member CKEDITOR.plugins.indent
@param {CKEDITOR.editor} editor The editor instance this command is
applied to.
@param {Object} commands An object of {@link CKEDITOR.command}.
Registers content - specific commands as a part of the indentation system directed by generic commands . Once a command is registered it listens for events of a related generic command .