We are happy to announce a new Scala IDE release that contains beside of some bug fixes, a new Outline View and a so called Statistics Tracker.
The old Outline View, which shows you the structure of the Scala file that is shown in the active editor, got a replacement by a new implementation. The old implementation was provided by the Java IDE of Eclipse and therefore was never a good fit for Scala code. The Scala IDE translated its internal information into a format that could be understood by the Java IDE but this conversion was not without its drawbacks. Since not all syntactic valid Scala elements have a representation in Java, some elements were shown wrong or not at all. The new implementation is a complete rewrite in Scala for Scala code and therefore is a huge improvement over what was available before.
The new Outline looks like this:
Note, that the Outline only shows syntactic information. It doesn’t show anything that you can’t already see in the source code. This means that for example no return type for a method is shown, when there is none in the sources. In case you want more semantic information about your currently opened Scala file, you should have a look to the scala-search project, which can be installed through the update-site.
A further note is that all import declarations are collapsed by default. If you want to change this behavior, navigate to Preferences > Scala > Editor
and disable the behavior in the Outline section.
Another new feature is the Statistics Tracker. It tracks all the features you use in the Scala IDE and shows you a statistic in the preferences. It can be found in Preferences > Scala > Statistics
and looks like this:
The storage location for the statistics tracker can be changed in Preferences > Scala
to any location you like. Note, that it is possible to share the storage location between multiple instances of Scala IDE running at the same time. In case you do not wish that any data is shared, you need to configure multiple storage locations.
By using the “Step until next message is arrived” functionality of the Async Debugger, it doesn’t always allow you to go straight to the expected receive
method when it is wrapped in another receive
method. Example:
def receive = LoggingReceive {
case msg => foo
}
Instead it stops in the first receive
method it can find, which in this case is the one of LoggingReceive
. In order to avoid using the “Step until next message is arrived” multiple times, the Async Debugger now allows you to skip receive
methods by defining classes or packages that should not be considered by the Async Debugger. You can do this per runtime configuration. Go to the runtime configuration of your choice (for example by navigating to Run > Run Configurations...
) and then select the tab “Scala Debugger”. Here you can configure all the classes and packages that should be skipped.
Note, that each entry needs to stay in its own line.
As it was the case for the previous release, this release also comes with some improvements in the refactoring support. Another useful import strategy was added as well, it is called “Preserve only wildcards; one import statement per importee otherwise”. It basically allows you to explicitly add wildcard imports without Organize Imports destroying it because it wants to add only single import statements. This option can be chosen in Preferences > Scala > Editor > Organize Imports
.
For the full list of all changes, see the changelog.
As for every release, we’ll take a look at some statistics from our bug database.
52 tickets closed: 15 Andrey Ilinykh 14 (unassigned) 10 Matthias Langer 10 Simon Schäfer 3 Wieslaw Popielarski
For this release we want to thank especially Andrey Ilinykh, who contributed the new excellent Outline View.
The following statistic contains the accumulated commits of the following repositories:
# https://github.com/scala-ide/scala-ide % git shortlog -sn --no-merges 4.2.0-vfinal..4.3.0-rc1 # https://github.com/scala-ide/scala-refactoring % git shortlog -sn --no-merges 0.7.0..0.8.0-rc1 # https://github.com/scala-ide/scala-ide-play2 % git shortlog -sn --no-merges 0.5.0..0.5.2
Commits: 71 Simon Schäfer 46 Matthias Langer 21 Andrey Ilinykh 21 Wiesław Popielarski 5 Iulian Dragos 1 Krzysztof Romanowski 1 Mirko Stocker 1 Mirco Dotta