<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IntelliJ Scala plugin blog</title>
	<atom:link href="http://blog.jetbrains.com/scala/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jetbrains.com/scala</link>
	<description>News, events, features and tips from the team behind IntelliJ Scala plugin</description>
	<lastBuildDate>Tue, 30 Apr 2013 10:33:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Scala plugin 0.7.264 and Play2 plugin 0.2.49 were released!</title>
		<link>http://blog.jetbrains.com/scala/2013/04/30/scala-plugin-0-7-258-was-released/</link>
		<comments>http://blog.jetbrains.com/scala/2013/04/30/scala-plugin-0-7-258-was-released/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 10:33:05 +0000</pubDate>
		<dc:creator>Alexander Podkhalyuzin</dc:creator>
				<category><![CDATA[Release report]]></category>

		<guid isPermaLink="false">http://blog.jetbrains.com/scala/?p=815</guid>
		<description><![CDATA[We are happy to announce new versions of Scala and Play2 plugins for IntelliJ IDEA 12. Currently we are planning to make releases at the beginning of every month. This is one part of huge plan to make plugin more &#8230; <a href="http://blog.jetbrains.com/scala/2013/04/30/scala-plugin-0-7-258-was-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We are happy to announce new versions of <a title="Scala" href="http://plugins.jetbrains.com/plugin?pr=&amp;pluginId=1347">Scala</a> and <a title="Play2" href="http://plugins.jetbrains.com/plugin?pr=&amp;pluginId=7080">Play2</a> plugins for IntelliJ IDEA 12.</p>
<p>Currently we are planning to make releases at the beginning of every month. This is one part of huge plan to make plugin more stable and regular. <a title="Nightly builds" href="http://confluence.jetbrains.com/display/SCA/Scala+Plugin+Nightly+Builds+for+Leda">Nightly builds</a> are still available to get fixes more quickly.</p>
<p>New features:</p>
<ul>
<li>Inplace rename for generators and enumerators bindings in for expressions</li>
<li>Replace do-while with while and vice versa intentions</li>
<li><a id="id_l.I.ic.icr.ii.iica" href="http://youtrack.jetbrains.com/issue/SCL-5603">SCL-5603</a> Inspection for simplifying boolean expressions with boolean literals</li>
<li><a id="id_l.I.ic.icr.ii.iica" href="http://youtrack.jetbrains.com/issue/SCL-5602">SCL-5602</a> Inspection for double negations in boolean expressions</li>
<li>Create from usages quickfix in route files of Play2 project</li>
</ul>
<p>Fixes:</p>
<ul>
<li>Performance improvements</li>
<li>SBT-based compiler improvements</li>
<li>Improved method dependent types support in highlighting</li>
<li><a href="http://youtrack.jetbrains.net/issue/SCL-4935">SCL-4935</a> More robust breakpoint positioning for macro-arguments</li>
<li><a href="http://youtrack.jetbrains.net/issue/SCL-5594">SCL-5594</a> Single tuple argument in case classes generates right unapply method</li>
<li><a href="http://youtrack.jetbrains.net/issue/SCL-4699">SCL-4699</a> Browsing types (CTRL-N) defined in package objects</li>
<li><a href="http://youtrack.jetbrains.net/issue/IDEA-105434"><a id="id_l.I.ic.icr.ii.iica" href="http://youtrack.jetbrains.com/issue/SCL-5569">SCL-5569</a></a> Fixed type inference for generic Scala methods in Java</li>
<li><a id="id_l.I.ic.icr.ii.iica" href="http://youtrack.jetbrains.com/issue/SCL-4703">SCL-4703</a> Extra closing brace added incorrectly due to parsing error in scala doc</li>
<li>JavaScript parser errors caused by scala injection in Play2 templates</li>
<li>Formatter improvements in Play2 templates (fixed HTML indenting)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jetbrains.com/scala/2013/04/30/scala-plugin-0-7-258-was-released/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Smarter Code Completion for Scala</title>
		<link>http://blog.jetbrains.com/scala/2013/04/04/statement-code-completion/</link>
		<comments>http://blog.jetbrains.com/scala/2013/04/04/statement-code-completion/#comments</comments>
		<pubDate>Thu, 04 Apr 2013 13:05:04 +0000</pubDate>
		<dc:creator>Andrey Cheptsov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jetbrains.com/scala/?p=793</guid>
		<description><![CDATA[Following the release of IntelliJ IDEA 12.1 the Scala plugin has been updated as well bringing to you a bunch of enhancements. You might already know that IntelliJ IDEA provides a fantastic set of code completion features for Java, including &#8230; <a href="http://blog.jetbrains.com/scala/2013/04/04/statement-code-completion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Following the release of IntelliJ IDEA 12.1 the Scala plugin has been updated as well bringing to you a bunch of enhancements.</p>
<p>You might already know that IntelliJ IDEA provides a fantastic set of code completion features for Java, including instant completion, type-aware completion, chain completion, etc. You can find the full list in <a href="http://jetbrains.dzone.com/articles/top-20-code-completions-in-intellij-idea">Top 20 Features of Code Completion in IntelliJ IDEA</a> article. Almost everything mentioned in the article now is available for Scala developers.</p>
<p>Check out the new statement code completion for Scala:</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/hgxfBAhrTnk?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>We hope with this new feature you become even more productive and get more pleasure from development.</p>
<p>Please feel free to share your feedback on the <a href="http://devnet.jetbrains.net/community/idea/scala?view=discussions">discussion forum</a> and report bugs directly to our <a href="http://youtrack.jetbrains.net/issues/SCL">issue tracker</a>.</p>
<p><em>Develop with Pleasure!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jetbrains.com/scala/2013/04/04/statement-code-completion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A new way to compile</title>
		<link>http://blog.jetbrains.com/scala/2012/12/28/a-new-way-to-compile/</link>
		<comments>http://blog.jetbrains.com/scala/2012/12/28/a-new-way-to-compile/#comments</comments>
		<pubDate>Fri, 28 Dec 2012 19:18:26 +0000</pubDate>
		<dc:creator>Pavel Fatin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jetbrains.com/scala/?p=746</guid>
		<description><![CDATA[Together with the IDEA 12 release Scala plugin brings a brand new Scala compilation subsystem. Here are the main updates: The compilation is now &#8220;external&#8221;. Incremental compilation is now handled by SBT (instead of IDEA itself). Compile server is now &#8230; <a href="http://blog.jetbrains.com/scala/2012/12/28/a-new-way-to-compile/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Together with the IDEA 12 release Scala plugin brings a brand new Scala compilation subsystem. Here are the main updates:</p>
<ul>
<li>The compilation is now &#8220;external&#8221;.</li>
<li>Incremental compilation is now handled by SBT (instead of IDEA itself).</li>
<li>Compile server is now implemented via Nailgun (instead of FSC).</li>
</ul>
<p>Of course, a lot of explanations is needed to clarify all the details.</p>
<h3>External build</h3>
<p><a title="Brand New Compiler Mode in IntelliJ IDEA 12 Leda" href="http://blogs.jetbrains.com/idea/2012/06/brand-new-compiler-mode-in-intellij-idea-12-leda/">External build</a> is a one of the major features of IntelliJ IDEA 12.</p>
<p>External build implies that all compilation tasks (including project model interpretation) are performed in a <b>separate process</b>, fully isolated from the main IDE&#8217;s process.</p>
<p>As a result, we can:</p>
<ul>
<li>lower IDEA memory consumption and free its garbage collector;</li>
<li>reduce load on IDEA&#8217;s code model (<a title="IntelliJ IDEA Architectural Overview - PSI Files" href="http://confluence.jetbrains.net/display/IDEADEV/IntelliJ+IDEA+Architectural+Overview#IntelliJIDEAArchitecturalOverview-PsiFiles">PSI</a>) and virtual file system (<a title="IntelliJ IDEA Architectural Overview - Virtual Files" href="http://confluence.jetbrains.net/display/IDEADEV/IntelliJ+IDEA+Architectural+Overview#IntelliJIDEAArchitecturalOverview-VirtualFiles">VFS</a>);</li>
<li>speedup compilation (according to <a title="IntelliJ IDEA 12 Compiler. Twice as Fast" href="http://blogs.jetbrains.com/idea/2012/12/intellij-idea-12-compiler-twice-as-fast/">this</a> and <a href="http://devnet.jetbrains.net/message/5474787#5474787">that</a>).</li>
</ul>
<p>Now we can compile IDEA projects without running IDEA itself, e. g. from <b>command line</b> or from build tools (like Ant, Maven, etc.).</p>
<p>An additional benefit is an ability to use an automatic <b>background compilation</b>, so that your project will be kept in compiled state all the time.</p>
<p>Background compilation can be also used as a means to reveal code errors when <a title="Type-aware highlighting - Scala plugin blog" href="http://blog.jetbrains.com/scala/2011/03/02/type-aware-highlighting/">type-aware highlighting</a> can&#8217;t keep up with code complexity.</p>
<p>For more information on external build you may check the <a title="Brand New Compiler Mode in IntelliJ IDEA 12 Leda" href="http://blogs.jetbrains.com/idea/2012/06/brand-new-compiler-mode-in-intellij-idea-12-leda/">Brand New Compiler Mode in IntelliJ IDEA 12</a> blog post.</p>
<h3>SBT compiler</h3>
<p>Although &#8220;SBT compiler&#8221; sounds like a completely new kind of Scala compiler, that is not really so. To see what SBT compiler is and how it fits into Scala compilation, let&#8217;s start with a &#8220;big picture&#8221;.</p>
<p>Here are the main tasks we need to perform during Scala project compilation:</p>
<ul>
<li>We need to compile source code to <b>bytecode</b> (and to search for all kind of errors along the way). This task is <i>always</i> performed by Scalac (or Javac, for Java sources) no matter what tool is used to invoke it (IDE, SBT, Maven, Ant, Zinc or whatnot). So, Scalac (and Javac) is the actual &#8220;true&#8221; compiler, however it knows nothing about project structure, incremental compilation and so on. All it can do is to take a list of source files and produce a set of corresponding compiled classes.</li>
<li>We need to perform compilation <b>incrementally</b> (as opposed to compiling all sources all the time). Strictly speaking, this task is not required for project compilation (and it can even slow down a full project build). The whole point here is to <b>save time</b> during <i>subsequent</i> compilations. To do that, we need to track code changes and re-compile only affected files. And it is harder than it sounds &mdash; we need to monitor timestamps, store source-to-output mappings, check for public API changes, analyze direct and transitive dependencies (including ones between Scala and Java) and so on. There are not many tools capable of such a feat, and that is exactly what SBT &#8220;compiler&#8221; (as well as IDEA) does.</li>
<li>We need to compile project parts according to <b>project structure</b> i. e. to split project into separate, possibly dependent, modules of various types (test, production, resources, etc.), devise compilation order, apply compiler settings, provide required libraries and so on. Each tool (like IDEs, SBT, Maven, etc.) uses its own way of describing and storing project information.</li>
</ul>
<p>So, bytecode is still generated by Scalac (and Javac), project format is still IDEA&#8217;s, but incremental compilation is now handled by SBT instead of IDEA (so, we don&#8217;t use SBT project model, only SBT compiler, that acts as a wrapper around Scalac).</p>
<p>What&#8217;s the point of such an update? &#8211; Because there is a qualitative difference between how IDEA and SBT discover dependencies and process changes.</p>
<p>IDEA analysis is <b>bytecode-based</b> and language-agnostic. While it&#8217;s a very fine-grained, robust and time-proved method, there may be some rare unexpected glitches, specific to Scala code.</p>
<p>For example, let&#8217;s define a class <code>C</code> (in <code>C.scala</code>):<br />
<img src="http://blog.jetbrains.com/scala/files/2012/12/code-1.png" alt="" width="214" height="65" class="alignnone size-full wp-image-770" /><br />
and then &#8220;add&#8221; a method <code>name</code> via an implicit conversion (in <code>Main.scala</code>):<br />
<img src="http://blog.jetbrains.com/scala/files/2012/12/code-2.png" alt="" width="351" height="230" class="alignnone size-full wp-image-771" /><br />
After we compile and run the main method, we will see that the output is &#8220;foo&#8221;, and that&#8217;s what we expect it to be.</p>
<p>Then, let&#8217;s add a &#8220;real&#8221; method <code>name</code> to the class <code>C</code>:<br />
<img src="http://blog.jetbrains.com/scala/files/2012/12/code-3.png" alt="" width="276" height="87" class="alignnone size-full wp-image-772" /><br />
After the next compilation, we will discover that the output is &#8230; still &#8220;foo&#8221;, and <i>that</i> is is not what we expected&#8230; Why so? &#8211; Because, in terms of the bytecode, there&#8217;s no need to recompile <code>Main</code> class yet.</p>
<p>There are many additional cases (for example, related to named- and default parameters) which demonstrate, that bytecode analysis is not enough for proper incremental compilation of Scala code.</p>
<p>That is where SBT compiler comes to rescue, because it relies on <b>source-based</b> analysis of compiled code (to do that, SBT intercepts internal Scala compiler data), so it can take account of Scala-specific details to perform incremental compilation correctly (though SBT analysis of Java classes is still bytecode-based).</p>
<p>As a bonus, because SBT uses a so-called <i>compiler interface</i> layer to communicate with the Scala compiler, we can now run multiple versions of <b>in-process</b> Scala compilers in the same JVM. That&#8217;s how we can:</p>
<ul>
<li>reap the benefit of <a title="Just-in-time compilation - Wikipedia" href="http://en.wikipedia.org/wiki/Just-in-time_compilation">JIT compilation</a> (either during compilation of multiple modules or when using a compile server),</li>
<li>avoid creation of temporary files (with compiler arguments),</li>
<li>avoid compiler output parsing,</li>
<li>make compiler JVM parameters (in Scala facet) obsolete.</li>
</ul>
<p>It&#8217;s worth noting, that there is a one <b>side-effect</b> of using SBT compiler, resulting in how Java files are handled in Scala projects (ones with a least one Scala facet). Because we need to maintain a coherent model of dependencies, compilation of all Java files, event in &#8220;pure&#8221; Java modules, is routed through SBT. For most use cases that is perfectly OK, unless you need to use a non-standard Java compiler (by the way, SBT supports <b>in-process Java compiler</b> as well).</p>
<p>For more information on SBT compiler you may check <a title="Understanding Incremental Recompilation - SBT" href="http://www.scala-sbt.org/release/docs/Detailed-Topics/Understanding-incremental-recompilation.html">Understanding Incremental Recompilation</a> article in SBT documentation.</p>
<h3>New compile server</h3>
<p>Scala compiler is a quite <b>complex</b> piece of software, so it takes time to load and initialize it. When you compile a project with hundreds (or thousands) of files, this time is negligible comparing to the time needed to compile the code. However, when incremental compilation is used, and all you need is to re-compile a few files, it may take longer to warm-up a Scala compiler than to actually compile those files.</p>
<p>One solution to this problem is to run Scala compiler <i>in-process</i> to avoid compiler re-instantiation when compiling subsequent modules. This, however, still cannot liberate us form a first compiler initialization. To speedup compilation further, we need to use a <b>pre-initialized</b> compiler instance, and that is exactly what compile server does.</p>
<p>Originally, Scala compile server was implemented via <a title="FSC man page" href="http://www.scala-lang.org/docu/files/tools/fsc.html">FSC</a> (Fast Scala Compiler). While it works well enough, it has several limitations:</p>
<ul>
<li>FSC instance is bound to a single compiler version, so compile server settings were a part of project configuration and FSC instances are not shared between projects.</li>
<li>Because FSC reuses symbol table between runs, it sometimes might produce various errors during compilation.</li>
</ul>
<p>Now, because of our newfound ability to run multiple versions of Scala compiler in a single JVM, we can do better than that. New compile server is implemented using <a title="Nailgun - Insanely Fast Java" href="http://www.martiansoftware.com/nailgun/">Nailgun</a> (basically, it&#8217;s just a JVM process that can be accessed via a TCP/IP connection), so:</p>
<ul>
<li>It is now a matter of personal preference whether or not to use a  compile server. Compile server configuration is moved from project settings to application settings.</li>
<li>Compile server is now application-wide &#8211; it is reused for multiple compiler versions and shared between all projects (so we can save a lot of RAM).</li>
</ul>
<p>Compile server configuration is now located in Settings / Scala:</p>
<p><img src="http://blog.jetbrains.com/scala/files/2012/12/compile-server1.png" alt="" width="431" height="210" class="alignnone size-full wp-image-787" /></p>
<p>It&#8217;s recommended to use the following JVM parameters for the Scala compile server:</p>
<ul>
<li><code>-server</code> &#8211; to maximize peak operating speed (for the price of longer start-up time) and to encourage soft references retention (that we use to cache compiler instances).</li>
<li><code>-XX:MaxPermSize=256m</code> &#8211; to provide enough memory for loading of multiple sets of compiler classes.</li>
<li><code>-Xss1m</code> &#8211; to ensure that there will be enough stack space for recursive code in Scala compiler.</li>
</ul>
<p>If compile server is not used, it&#8217;s still recommended to use the same parameters (except, maybe, <code>-server</code>) in Project Settings / Compiler / Additional compiler process VM options.</p>
<h3>How all this is related to Zinc</h3>
<p><a title="Zinc and Incremental Compilation" href="http://blog.typesafe.com/zinc-and-incremental-compilation">Zinc</a> is a stand-alone launcher for SBT incremental compiler (and Nailgun server). It was created, primarily, to be used in command line tools (like <a title="Scala Maven Plugin" href="https://github.com/davidB/scala-maven-plugin">Scala Maven Plugin</a>).</p>
<p>Because both Zinc and the new compilation subsystem use the same tools and techniques, they are <b>essentially equivalent</b>. There is not much sense in using a launcher from another launcher, so we run both SBT compiler and Nailgun <b>directly</b>, rather than via Zinc.</p>
<p>Besides, we need much more data from the compiler (to display compilation messages, report progress, compile UI forms, run annotation processors, etc.) which is not available from Zinc output. Zinc&#8217;s Nailgun server also cannot be used by IDEA because its process is started without IDEA-specific classes (communication protocol) in JVM classpath.</p>
<p>As Zinc cannot build a project by itself, it must be invoked from another tool (like Maven), which stores all incremental compilation data using its own scheme, that differs from IDEA&#8217;s one. So, currently we cannot unite IDEA&#8217;s and Zinc/Maven&#8217;s incremental compilation even though they are very much alike.</p>
<h3>Summary</h3>
<p>Let&#8217;s sum-up all the advantages of the new Scala compilation subsystem:</p>
<ul>
<li>Less load on IDEA process.</li>
<li>External project build.</li>
<li>Background compilation.</li>
<li>Source-based incremental compilation.</li>
<li>In-process Scala and Java compilers.</li>
<li>Simplified project configuration.</li>
<li>Application-wide compile server.</li>
</ul>
<p>There must be a catch in it somewhere, you know&#8230; And here it is &#8211; because the new compilation subsystem is written completely from scratch, some bugs are simply inevitable. Please, <a title="Scala - Youtrack" href="http://youtrack.jetbrains.com/issues/SCL">report them</a> so we can fix them as soon as possible.</p>
<p>Keep in mind, that the <b>previous</b> compilation subsystem is still available, and can be always turned on by clearing &#8220;Use external build&#8221; checkbox in Project Settings / Compiler page:</p>
<p><img src="http://blog.jetbrains.com/scala/files/2012/12/compiler.png" alt="IDEA compiler configuration" width="466" height="149" class="alignnone size-full wp-image-774" /></p>
<p>You may also check there whether the external build is enabled in your existing projects.</p>
<p>For those who want to know even more details, here is source code for all the tools:</p>
<ul>
<li><a href="https://github.com/JetBrains/intellij-scala/tree/master/jps-plugin/src/org/jetbrains/jps/incremental/scala">IntelliJ Scala plugin JPS compiler</a></li>
<li><a href="https://github.com/harrah/xsbt">SBT</a> (plus <a href="https://github.com/pavelfatin/sbt/commits/idea">our patches<a />)</li>
<li><a href="https://github.com/martylamb/nailgun">Nailgun</a></li>
<li><a href="https://github.com/typesafehub/zinc">Zinc</a></li>
<li><a href="https://github.com/davidB/scala-maven-plugin">Scala Maven Plugin</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jetbrains.com/scala/2012/12/28/a-new-way-to-compile/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Scala Worksheet</title>
		<link>http://blog.jetbrains.com/scala/2012/12/04/scala-worksheet/</link>
		<comments>http://blog.jetbrains.com/scala/2012/12/04/scala-worksheet/#comments</comments>
		<pubDate>Tue, 04 Dec 2012 12:52:59 +0000</pubDate>
		<dc:creator>Ksenia Sautina</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jetbrains.com/scala/?p=716</guid>
		<description><![CDATA[We are announcing start of Scala Worksheet feature support. It&#8217;s available in scala plugin for Leda from v.0.6.368. A worksheet is a scala file with .sc extension which you can run and  get evaluation results in a special view appeared &#8230; <a href="http://blog.jetbrains.com/scala/2012/12/04/scala-worksheet/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We are announcing start of Scala Worksheet feature support. It&#8217;s available in scala plugin for Leda from v.0.6.368.</p>
<p>A worksheet is a scala file with .sc extension which you can run and  get evaluation results in a special view appeared in the editor.</p>
<p>Create worksheet by right-clicking on your Project and choosing &#8216;New&#8217; -&gt; &#8216;Scala Worksheet&#8217;.</p>
<p><a href="http://blog.jetbrains.com/scala/files/2012/12/1_create.png"><img class="aligncenter size-full wp-image-720" src="http://blog.jetbrains.com/scala/files/2012/12/1_create.png" alt="" width="479" height="389" /></a></p>
<p>Just type your code, press &#8216;Evaluate worksheet&#8217; button and results appear.</p>
<p><a href="http://blog.jetbrains.com/scala/files/2012/12/2_look1.png"><img class="aligncenter size-full wp-image-739" src="http://blog.jetbrains.com/scala/files/2012/12/2_look1.png" alt="" width="950" height="218" /></a></p>
<p style="text-align: left">Evaluation of Scala Objects is also supported.</p>
<p style="text-align: left"><a href="http://blog.jetbrains.com/scala/files/2012/12/2_look_21.png"><img class="aligncenter size-full wp-image-740" src="http://blog.jetbrains.com/scala/files/2012/12/2_look_21.png" alt="" width="950" height="365" /></a></p>
<p style="text-align: left">&#8216;Worksheet&#8217; tab is available in &#8216;Project setting&#8217; -&gt; &#8216;Scala&#8217;. You can configurate output length before line break.</p>
<p style="text-align: left"><a href="http://blog.jetbrains.com/scala/files/2012/12/3_settings.png"><img class="aligncenter size-full wp-image-733" src="http://blog.jetbrains.com/scala/files/2012/12/3_settings.png" alt="" width="1240" height="861" /></a></p>
<p style="text-align: left">All features of Scala editor are supported because worksheet file is treated as simple scala file.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jetbrains.com/scala/2012/12/04/scala-worksheet/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Scala plugin for Nika</title>
		<link>http://blog.jetbrains.com/scala/2012/10/05/scala-plugin-for-nika/</link>
		<comments>http://blog.jetbrains.com/scala/2012/10/05/scala-plugin-for-nika/#comments</comments>
		<pubDate>Fri, 05 Oct 2012 10:20:27 +0000</pubDate>
		<dc:creator>Alexander Podkhalyuzin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jetbrains.com/scala/?p=711</guid>
		<description><![CDATA[I want to announce that from now only very significant fixes will be backported to IDEA 11 plugin version (Nika). This can make things in Leda plugin version slightly faster. Automatical nightly builds deployment is stopped.]]></description>
			<content:encoded><![CDATA[<p>I want to announce that from now only very significant fixes will be backported to IDEA 11 plugin version (Nika). This can make things in Leda plugin version slightly faster. Automatical nightly builds deployment is stopped.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jetbrains.com/scala/2012/10/05/scala-plugin-for-nika/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migration to GitHub</title>
		<link>http://blog.jetbrains.com/scala/2012/08/30/migration-to-github/</link>
		<comments>http://blog.jetbrains.com/scala/2012/08/30/migration-to-github/#comments</comments>
		<pubDate>Thu, 30 Aug 2012 14:58:15 +0000</pubDate>
		<dc:creator>Alexander Podkhalyuzin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jetbrains.com/scala/?p=705</guid>
		<description><![CDATA[As you probably know we have GitHub mirror of Scala plugin sources: https://github.com/JetBrains/intellij-scala From now it&#8217;s not a mirror, it&#8217;s working repository. So it&#8217;s good idea to start social activity on GitHub right now.]]></description>
			<content:encoded><![CDATA[<p>As you probably know we have GitHub mirror of Scala plugin sources: <a href="https://github.com/JetBrains/intellij-scala">https://github.com/JetBrains/intellij-scala</a></p>
<p>From now it&#8217;s not a mirror, it&#8217;s working repository. So it&#8217;s good idea to start social activity on GitHub right now.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jetbrains.com/scala/2012/08/30/migration-to-github/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to configure Scala plugin project</title>
		<link>http://blog.jetbrains.com/scala/2012/08/07/how-to-configure-scala-plugin-project/</link>
		<comments>http://blog.jetbrains.com/scala/2012/08/07/how-to-configure-scala-plugin-project/#comments</comments>
		<pubDate>Tue, 07 Aug 2012 07:54:03 +0000</pubDate>
		<dc:creator>Alexander Podkhalyuzin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jetbrains.com/scala/?p=698</guid>
		<description><![CDATA[This post is inspired by Scalathon 2012 conference, where we found few enthusiasts, who want to improve their favorite IDE for Scala, they just didn&#8217;t know how to do it. Scala plugin project setup was simplified a lot recently. Additionally &#8230; <a href="http://blog.jetbrains.com/scala/2012/08/07/how-to-configure-scala-plugin-project/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This post is inspired by Scalathon 2012 conference, where we found few enthusiasts, who want to improve their favorite IDE for Scala, they just didn&#8217;t know how to do it.</p>
<p>Scala plugin project setup was simplified a lot recently. Additionally we added full guides about such setup:</p>
<ul>
<li><a href="http://confluence.jetbrains.net/display/SCA/Setting+up+Scala+plugin+project+in+IntelliJ+IDEA" target="_blank">Here</a> you can find full guide about setting up Scala plugin project.</li>
<li><a href="http://confluence.jetbrains.net/display/SCA/Developing+IDEA+plugin+with+dependency+on+Scala+plugin" target="_blank">Here</a> you can find complete guide about how to start writing new plugins for Scala (in case, for example, if you have your own compiler plugin and you want to have the same things in IntelliJ IDEA).</li>
</ul>
<p>In case if you want to try, you can contact me for any question (including questions about bugs and API questions): <a href="mailto:Alexander.Podkhalyuzin@jetbrains.com">Alexander Podkhalyuzin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jetbrains.com/scala/2012/08/07/how-to-configure-scala-plugin-project/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>I18n for Scala</title>
		<link>http://blog.jetbrains.com/scala/2012/07/26/i18n-for-scala/</link>
		<comments>http://blog.jetbrains.com/scala/2012/07/26/i18n-for-scala/#comments</comments>
		<pubDate>Thu, 26 Jul 2012 15:23:44 +0000</pubDate>
		<dc:creator>Ksenia Sautina</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jetbrains.com/scala/?p=688</guid>
		<description><![CDATA[The internationalization (I18N) support is available now in Scala plugin with following features: Folding for i18n messages Create new property intention Navigation Completion]]></description>
			<content:encoded><![CDATA[<p>The internationalization (I18N) support is available now in Scala plugin with following features:</p>
<ul>
<li>Folding for i18n messages</li>
</ul>
<p style="padding-left: 60px"><a href="http://blog.jetbrains.com/scala/files/2012/07/folding.png"><img class="aligncenter size-full wp-image-691" src="http://blog.jetbrains.com/scala/files/2012/07/folding.png" alt="" width="800" height="100" /></a></p>
<ul>
<li>Create new property intention</li>
</ul>
<p style="padding-left: 60px"><a href="http://blog.jetbrains.com/scala/files/2012/07/create-property.png"><img class="aligncenter size-full wp-image-692" src="http://blog.jetbrains.com/scala/files/2012/07/create-property.png" alt="" width="800" height="680" /></a></p>
<ul>
<li>Navigation</li>
</ul>
<p style="padding-left: 60px"><a href="http://blog.jetbrains.com/scala/files/2012/07/navigation.png"><img class="aligncenter size-full wp-image-693" src="http://blog.jetbrains.com/scala/files/2012/07/navigation.png" alt="" width="800" height="140" /></a></p>
<ul>
<li>Completion</li>
</ul>
<p style="padding-left: 60px"><a href="http://blog.jetbrains.com/scala/files/2012/07/completion.png"><img class="aligncenter size-full wp-image-694" src="http://blog.jetbrains.com/scala/files/2012/07/completion.png" alt="" width="800" height="180" /></a></p>
<ul></ul>
<p><span style="font-size: small"><span style="line-height: 24px"><br />
</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jetbrains.com/scala/2012/07/26/i18n-for-scala/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Play 2.0 support</title>
		<link>http://blog.jetbrains.com/scala/2012/07/20/play-2-0-support/</link>
		<comments>http://blog.jetbrains.com/scala/2012/07/20/play-2-0-support/#comments</comments>
		<pubDate>Fri, 20 Jul 2012 16:11:41 +0000</pubDate>
		<dc:creator>Dmitry Naydanov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jetbrains.com/scala/?p=679</guid>
		<description><![CDATA[We are announcing start of Play 2.0 support. Alpha version of new Play 2.0 plugin  for IntelliJ IDEA just released: http://plugins.intellij.net/plugin/index?pr=&#38;pluginId=7080 It comes with basic template language support, which includes go to declaration, completion and some features inherited from Scala and &#8230; <a href="http://blog.jetbrains.com/scala/2012/07/20/play-2-0-support/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We are announcing start of Play 2.0 support. Alpha version of new Play 2.0 plugin  for IntelliJ IDEA just released: <a href="http://plugins.intellij.net/plugin/index?pr=&amp;pluginId=7080">http://plugins.intellij.net/plugin/index?pr=&amp;pluginId=7080</a></p>
<p>It comes with basic template language support, which includes go to declaration, completion and some features inherited from Scala and Html editors.</p>
<p><a href="http://blog.jetbrains.com/scala/files/2012/07/screen.png"><img class="size-medium wp-image-680 alignnone" src="http://blog.jetbrains.com/scala/files/2012/07/screen-300x269.png" alt="Plugin screen" width="300" height="269" align="center" /></a></p>
<p>We are planning to implement other cool features like formatter, project wizard, refactorings and etc. Please feel free to report any problems and new features suggestions to our Scala plugin bugtracker (Play 2.0 plugin is part of Scala plugin infrastructure): <a href="http://youtrack.jetbrains.com/issues/SCL">http://youtrack.jetbrains.com/issues/SCL</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jetbrains.com/scala/2012/07/20/play-2-0-support/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Format and convert</title>
		<link>http://blog.jetbrains.com/scala/2012/07/12/format-and-convert/</link>
		<comments>http://blog.jetbrains.com/scala/2012/07/12/format-and-convert/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 10:52:59 +0000</pubDate>
		<dc:creator>Pavel Fatin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jetbrains.com/scala/?p=629</guid>
		<description><![CDATA[The truth is that programmers often need to embed dynamic variables into static string patterns. To accomplish this feat we used to write something like: or even A good news is that Scala 2.10 brings a shiny new string interpolation: &#8230; <a href="http://blog.jetbrains.com/scala/2012/07/12/format-and-convert/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The truth is that programmers often need to embed dynamic variables into static string patterns. To accomplish this feat we used to write something like:<br />
<img src="http://blog.jetbrains.com/scala/files/2012/07/01.png" alt="" width="300" height="46" class="alignnone size-full wp-image-630" /><br />
or even<br />
<img src="http://blog.jetbrains.com/scala/files/2012/07/02.png" alt="" width="390" height="46" class="alignnone size-full wp-image-631" /><br />
A good news is that Scala 2.10 brings a shiny new <a title="SIP-11 - String Interpolation" href="http://docs.scala-lang.org/sips/pending/string-interpolation.html">string interpolation</a>:<br />
<img src="http://blog.jetbrains.com/scala/files/2012/07/03.png" alt="" width="222" height="44" class="alignnone size-full wp-image-632" /><br />
The new syntax is more concise, offers more static checking and provides a better runtime performance.</p>
<p>To facilitate the transition, Scala plugin introduced a new group of intentions to easily convert between all the variants of string formatting:</p>
<div align="center">
<img src="http://blog.jetbrains.com/scala/files/2012/07/04a.png" alt="" width="400" height="98" class="alignnone size-full wp-image-657" /><br />
&darr;<br />
<img src="http://blog.jetbrains.com/scala/files/2012/07/05a.png" alt="" width="417" height="107" class="alignnone size-full wp-image-658" /><br />
&darr;<br />
<img src="http://blog.jetbrains.com/scala/files/2012/07/03.png" alt="" width="222" height="44" class="alignnone size-full wp-image-632" />
</div>
<p>In addition, we now have a complete format string and argument verification in the following places:</p>
<ul>
<li><code>"&hellip;".format(&hellip;)</code></li>
<li><code>&hellip;.formatted("&hellip;")</code></li>
<li><code>String.format("&hellip;", &hellip;)</code></li>
<li><code>printf("&hellip;", &hellip;)</code></li>
<li><code>System.out.printf("&hellip;", &hellip;)</code></li>
<li>Interpolated strings</li>
</ul>
<p>The verification is even more fine-grained than the similar one in Java:<br />
<img src="http://blog.jetbrains.com/scala/files/2012/07/06.png" alt="" width="341" height="216" class="alignnone size-full wp-image-654" /><br />
All the functionality is already available in the Scala plugin nightly builds (<a title="Scala plugin nightly builds for Nika" href="http://confluence.jetbrains.net/display/SCA/Scala+Plugin+Nightly+Builds+for+Nika">Nika</a> | <a title="Scala plugin nightly builds for Leda" href="http://confluence.jetbrains.net/display/SCA/Scala+Plugin+Nightly+Builds+for+Leda">Leda</a>).</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jetbrains.com/scala/2012/07/12/format-and-convert/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
