I checked the implementation of Job and how it handles rules, and I believe we can greatly simplify this.

When you create the Job [here](https://github.com/scala-ide/scala-search/pull/19/files#L24R117), before scheduling it, add the following ``job.setRule(ResourcesPlugin.getWorkspace().getRuleFactory() .modifyRule(project.underlying)``. By doing so, you no longer need the ``beginRule/endRule`` logic, because it is already taken care by the platform. The rule is only applied for the time the Job is run.