Comma

The latest Comma Community release is 2020.04.0. Want more frequent updates and more features? Consider buying a Comma Complete subscription.

Comma IDE

The standalone Comma IDE.

Windows

Linux

MacOS

Comma IDEA Plugin

The Comma Raku (Perl 6) Plugin for use with other IDEA-platform IDEs, such as JetBrains IntelliJ. The plugin download is cross-platform.

Plugin

First time with Comma? See the installation instructions.

Changes in this release
  • A new grammar live preview feature. A grammar can be run against a specified input, and is automatically re-run on code changes or input changes. A trace of the parse is displayed, like that produced by Grammar::Tracer, except it's in a tree view and selecting an entry shows which bit of the input text it matched. Further, double-clicking a matched part of the input text shows the rule that matched it. It is possible to navigate onward to the source code of the rule.
  • An intention is now available to turn a positional capture in a regex into a named capture.
  • Cro template default parameter syntax is now parsed and handled correctly.
  • Fix some cases of literal extraction into a variable which were mistakenly detected as impossible before
  • Add a Raku REPL with multiline commands, history, auto-completion of symbols, and the usual range of annotations and intentions
  • Add an intention to convert a ternary expression into a conditional construct
  • Add an intention to convert a non-capturing regex group into a named capture
  • Add an intention to convert a non-capturing regex group into a positional capture, with subsequent capture variables being renumbered appropriately
  • Improve completion and resolving of variables obtained from regex matching, supporting more code cases which implicitly set the `$/` variable and its matches
  • Allow renaming of Cro template parameters, as well as template sub and macro names
  • Correctly parse iteration over a variable in Cro template parameters (e.g. `@$foo`)
  • Correctly parse multiline comments in Cro templates
  • When a project SDK can't be used or is missing, now a notification is shown to the user suggesting to set one, instead of throwing an exception which could occur earlier
  • Shebang lines in scripts which end with `perl6`, `raku` and `rakudo` are used to detect Raku scripts with no file extension
  • Improve provision of positional capture variables (`$0`, `$1` etc): earlier, `/(a(b))/` would provide two variables, but now only a single one is provided
  • Improve provision of named capture variables: earlier `/$<a>=(<foo> <bar>)/` would provide three named variables, but now only a single one is provided
  • Do not highlight an unqualified call of a private method on a variable as undeclared if there is a private method in the current class of the same type, as Rakudo does
  • Make the intention which simplifies range literals work when the left range side includes an infix operator application (e.g. `$foo - 5 .. *`)
  • Fix formatting of array literals
  • Fix indentation when pressing enter during typing multiple traits
  • Fix a bug when during debugging the attributes of `self` on a `Match` objects were not shown
  • Prevent an exception in the annotation which checks `EVAL` interpolation usage
  • Add a Raku Code Style page to the settings, where numerous new formatting configuration options are available
  • Allow configuration of indentation size and continuation indent size (the defaults are as before)
  • Allow configuration of whether to use tabs or spaces (the default continues to be spaces)
  • Implement optional wrapping of long lines of code
  • Allow configuration of whether curly braces go on the same line of code or the line below (defaults to same line, as before). This can be configured separately for packages, routines, regexes, phasers, and other blocks
  • Implement wrapping and alignment for parameter lists, argument lists, trait lists, array initializers, and infix operands; these can all be configured
  • The formatter can now apply spacing rules, with over 20 different cases being configurable. For example, it's now possible to have formatting ensure there are spaces around infix operators
  • Implement Find Usages for Cro templates, to allow all usages of a template sub, macro, or variable to be found
  • Fix a parsing bug with the infix fatarrow operator, which could lead to some odd selection or formatting behaviors
  • Fix a bug that led to Comma thinking the cross built-in did not exist, when in fact it does
  • Fix external modules symbol loading on Window