scala-ide/scala-ide — pull request #819 by sschaef (2014-10-05 20:13:55+00:00)
Title: Redesign of quick assists

This is a complete redesign of the quick assists feature. At the moment we still use the extension point provided by JDT. This one worked fine so far, but it broke in my save action PR (#761). A new document provider needs to be provided but the quick assist feature of JDT works only with the document provider that is provided by JDT.

Key points:
- This PR should only do refactorings and not provide any functional changes (well, except from one bug fix).
- A new extension point `quickAssists` is introduced.
- There is no distinction between quick assists and quick fixes anymore. I decided to only keep the word "quick assist" because both types are the same conceptually. The only difference in theory was that quick fixes represent assists to compiler errors whereas quick assists represent all other assists. In practice there was no advantage is making such a distinction, therefore the term "quick fix" is no longer used.
- The existing `ScalaQuickFixProcessor` and `ScalaQuickAssistProcessor` were replaced by a lot of little quick assists, which are configured through the `quickAssists` extension point.
- This PR is necessary in order to get #761 merged.

Todos:
- [ ] `org.scalaide.core.quickassist.InvocationContext` used the internal class `ScalaSourceFile`. I don't know what to do here. Should we move it to public the API or provide a more lightweight accessor? Quick assists need full power therefore I'm not sure if it makes much sense to design a more lightweight accessor.
- [ ] I need to know what key combinations are used on Mac for the quick assist feature. I have Eclipse' M1+1 configured for now, is this ok for Mac or do you use a different one?
- [ ] Write documentation on how to use the new extension point.