Bug 73092 [IDE] WorkspaceModifyOperation does not avoid updates, although comment indicates it does
From the class comment of WorkspaceModifyOperation: * The primary * consequence of using this operation is that events which typically occur as a * result of workspace changes (such as the firing of resource deltas, * performance of autobuilds, etc.) are deferred until the outermost operation * has successfully completed. However this doesn't appear to be true in Eclipse 3.0. It is possible that the notification manager will send out an intermediate ResourceModifyEvent during the execution. It seems that this is because of this line: IDEWorkbenchPlugin.getPluginWorkspace().run(workspaceRunnable, rule, IResource.NONE, monitor); If IWorkspace.AVOID_UPDATE were passed (instead of IResource.NONE) I believe that these intermediate events would not occur. Probably either the comment or the implementation should be changed. Also as a side request it would be nice if this parameter could be configurable through the API of this class.
bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/WorkspaceModifyOperation.java
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.operation.IThreadListener;
import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
/**
 * An operation which potentially makes changes to the workspace. All resource 
 * modification should be performed using this operation. The primary 
 * consequence of using this operation is that events which typically occur as a
 * result of workspace changes (such as the firing of resource deltas, 
 * performance of autobuilds, etc.) are deferred until the outermost operation
 * has successfully completed.
 * <p>
 * If a scheduling rule is provided, the operation will obtain that scheduling
 * rule for the duration of its <code>execute</code> method.  If no scheduling
 * rule is provided, the operation will obtain a scheduling rule that locks
 * the entire workspace for the duration of the operation.
 * </p>
 * <p>
 * Subclasses must implement <code>execute</code> to do the work of the
 * operation.
 * </p>
 * @see ISchedulingRule
 * @see org.eclipse.core.resources.IWorkspace#run(IWorkspaceRunnable, IProgressMonitor)
 *  */
public abstract class WorkspaceModifyOperation implements IRunnableWithProgress, IThreadListener {
    private ISchedulingRule rule;
    /**
     * Creates a new operation.
     */
    protected WorkspaceModifyOperation() {