docs: 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 ] );
  				}
  			} );
  		}