{"id":492859,"date":"2024-08-07T08:46:42","date_gmt":"2024-08-07T07:46:42","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=scala&#038;p=492859"},"modified":"2024-08-07T08:49:35","modified_gmt":"2024-08-07T07:49:35","slug":"intellij-scala-plugin-2024-1-is-out-2","status":"publish","type":"scala","link":"https:\/\/blog.jetbrains.com\/ru\/scala\/2024\/08\/07\/intellij-scala-plugin-2024-1-is-out-2","title":{"rendered":"IntelliJ Scala Plugin 2024.2 Is Out!"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Scala 3  <\/h2>\n\n\n\n<p>The new release comes with lots of bug fixes and improvements to Scala 3 support. Here are some of them:<\/p>\n\n\n\n<ul>\n<li>For-comprehensions are now always handled correctly when used together with the &#8220;fewer braces&#8221; syntax.&nbsp;<\/li>\n\n\n\n<li>We fixed the issue where renaming parameters broke wildcard types.<\/li>\n\n\n\n<li>We now correctly handle constructor annotations.<\/li>\n\n\n\n<li>Support for export clauses and extension methods has been improved.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"880\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/export_clauses-3.png\" alt=\"An exported extension method is suggested for code completion\" class=\"wp-image-494305\"\/><\/figure>\n\n\n\n<ul>\n<li>We fixed a bug where IntelliJ Scala Plugin was not able to correctly infer intersection types.<\/li>\n\n\n\n<li>We have fixes for when optimizing imports sometimes removed used imports or wrongly handled wildcards and aliases in Scala 3 code.<\/li>\n\n\n\n<li>Import suggestions now include enum cases.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video controls loop muted poster=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/autoimport.png\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/autoimport.mp4\" playsinline><\/video><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Better code highlighting<\/h2>\n\n\n\n<p>The new release includes several improvements to error and syntax highlighting.&nbsp;<\/p>\n\n\n\n<ul>\n<li>We now highlight class fields defined in parameter clauses as fields instead of parameters.&nbsp;<\/li>\n\n\n\n<li>Named arguments now have a distinct color highlighting, making them easier to identify in your code.\u00a0<br><em>Named arguments, before and now:<\/em><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1500\" height=\"600\" data-id=\"494249\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/named_params_before.png\" alt=\"Before, the named arguments in a constructor had default highlighting\" class=\"wp-image-494249\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1500\" height=\"600\" data-id=\"494260\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/namedParams_after-1.png\" alt=\"Before, the named arguments have distinct color highlighting\" class=\"wp-image-494260\"\/><\/figure>\n<\/figure>\n\n\n\n<ul>\n<li>The regex syntax inside <code>Regex(\"...\")<\/code> is now highlighted just as it&#8217;s done for <code>\"...\".r<\/code>.&nbsp;<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1500\" height=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/regex_highlighting-1.png\" alt=\"We now highlight regular expression in Regex(...) constructors just as we do for &quot;...&quot;.r \" class=\"wp-image-494139\"\/><\/figure>\n\n\n\n<ul>\n<li>We fixed some &#8220;valid code highlighted red&#8221; issues when the code was highlighted after refactoring or because the type of the symbol couldn&#8217;t be resolved. In many cases, semantic highlighting is now applied instantly as you type.<\/li>\n<\/ul>\n\n\n\n<p>In addition, IntelliJ Scala Plugin is now more responsive when the user fixes errors, removing the red code right after the fix.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Improved Compiler-Based Highlighting<\/h2>\n\n\n\n<ul>\n<li>The performance of compiler error highlighting has been improved. We avoid applying out-of-date error highlighting information to the editor when the user has already modified the file.&nbsp;<\/li>\n\n\n\n<li>Scala compiler diagnostics are now supported and available as regular IDEA quick fixes for easy application.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Better code completion<\/h2>\n\n\n\n<ul>\n<li>IntelliJ Scala Plugin can now automatically fill out all methods&#8217; named arguments and autocomplete literal values of a union type in Scala 3.&nbsp;<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video controls loop muted poster=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/code_completion-2.png\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/code_completion-2.mp4\" playsinline><\/video><\/figure>\n\n\n\n<ul>\n<li>Enum cases are now suggested whenever an enum type is expected. The feature works with Scala 3 enums, union types, Scala 2 ADTs,&nbsp; enumerations, and Java enums, simplifying coding by providing relevant suggestions.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video controls poster=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/enum_autocompletion-2.png\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/enum_autocompletion-3.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Other Improvements<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">StringBuilder in the debugger<\/h3>\n\n\n\n<p>The contents of a StringBuilder is now displayed in the debugger as a string. This feature is available as well in the minor release 2024.1.21.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"3000\" height=\"1200\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/stringbuilder.png\" alt=\"The contents of a StringBuilder is now displayed in the debugger as a string\" class=\"wp-image-492938\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Onboarding tips<\/h3>\n\n\n\n<p>Onboarding tips are a new feature aimed at helping beginners. If you choose to use them when you start a new Scala project from scratch, Scala Plugin will generate a small program with a few tips about using IntelliJ Scala Plugin.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"2134\" height=\"1410\" data-id=\"494223\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/onboarding_tips_1-1.png\" alt=\"In the wizard, you can choose to generate sample code with onboarding tips\" class=\"wp-image-494223\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"2134\" height=\"1410\" data-id=\"494216\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/onboarding_tips_2.png\" alt=\"In the editor, you will see the onboarding tips with proposed shorcuts matching your keymap.\" class=\"wp-image-494216\"\/><\/figure>\n<\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Better support for Sticky Lines<\/h3>\n\n\n\n<p>IntelliJ Scala Plugin now has better support for displaying values and variables and match case branches in the Sticky Lines panel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Library download progress in sbt imports<\/h3>\n\n\n\n<p>Library download progress is shown during sbt project import. This feature is available as well in the minor release 2024.1.21.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls loop muted poster=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/library_download-2.png\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/library_download_short.mp4\" playsinline><\/video><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">The Copy Type context menu action<\/h3>\n\n\n\n<p>The new release introduces the &#8220;Copy type&#8221; context menu action in addition to the &#8220;Add type&#8221; intention. When you hover the cursor over a symbol and see its inferred type in a popup, you can now not only explicitly add it to the symbol but also copy-paste it somewhere else.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Enum file icons<\/h3>\n\n\n\n<p>File icons for enums were updated.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1092\" height=\"842\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/enum_icons-1.png\" alt=\"New enum file icons\" class=\"wp-image-493236\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Advanced grammar and spelling check in ScalaDoc<\/h3>\n\n\n\n<p>We have integrated IntelliJ Scala Plugin with<a href=\"https:\/\/www.jetbrains.com\/grazie\/\" target=\"_blank\" rel=\"noopener\"> the Grazie plugin<\/a> to provide advanced spelling and grammar checks in Scala comments, improving the quality of your code documentation. The<a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16136-grazie-pro\" target=\"_blank\" rel=\"noopener\"> Grazie Pro plugin<\/a> offers more advanced features.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"3008\" height=\"1200\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/grazie_plugin.png\" alt=\"Grazie Plugin helps you write documentation\" class=\"wp-image-494293\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>As always, your feedback is very welcome. Please report any issues you find to <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/SCL\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>. If you have any questions, feel free to ask us on <a href=\"https:\/\/discord.com\/channels\/931170831139217469\" target=\"_blank\" rel=\"noopener\">Discord<\/a>.<\/p>\n\n\n\n<p>Happy developing!<\/p>\n\n\n\n<p class=\"has-text-align-right\">The <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/1347-scala\" target=\"_blank\" rel=\"noopener\">IntelliJ Scala Plugin<\/a> team<\/p>\n","protected":false},"author":1344,"featured_media":499376,"comment_status":"closed","ping_status":"closed","template":"","categories":[89,907,8058,6945],"tags":[40,76,6836,225],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/scala\/492859"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/scala"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/types\/scala"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/users\/1344"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/comments?post=492859"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/scala\/492859\/revisions"}],"predecessor-version":[{"id":499560,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/scala\/492859\/revisions\/499560"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/media\/499376"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/media?parent=492859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/categories?post=492859"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/tags?post=492859"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/cross-post-tag?post=492859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}