Comma

The latest Comma Community release is 2021.07.1. 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
  • Add a `raku-doc` mode for Comma. Now it is possible to start Comma passing the `raku-doc` option and paths to project directories as arguments. Comma will be invoked, it will import or open each relative project and will try to extract the documentation for the module and render it into simple HTML pages (e.g. `comma.sh raku-doc -o output cro-webapp cro-http`)
  • Add an annotation warning about useless use of constant expressions in sink (void) context
  • Support navigation for Cro template parts: using 'Related Symbols' from the template part name jumps to related `template-part` calls in a `route` block and vice versa
  • Fix exceptions related to changing projects
  • Fix a bug where required parameters for a pointy block within a variable declaration got an annotation about presence of an initializer
  • Fix an exception related to dynamic variables during indexing
  • Fix discovery of traits to complete when multiple distributions are used in the same file
  • Support preview and display of documentation of Raku modules in the editor. All Pod blocks will be rendered, followed by API documentation of all exported or globally visible types and subroutines, including declarator comments. A split mode (docs and code) is available for live preview when authoring documentation
  • Rework and greatly improve syncing between the `META6.json` file and project files. It now includes handling of the `resources` directory, and some bugs in this area are fixed
  • Support the Cro template part syntax planned in the next Cro release, with both syntax highlighting and parameter resolution
  • Complete aliased names when completing custom traits (e.g. `:tel(:$telephone)` in a trait declaration will properly be suggested as both `is tel` and `is telephone`)
  • Fix a validation false negative in the `New Documentation` dialog
  • Fix a false positive annotation for calls on unknown types
  • Fix a false positive annotation for a signature when a `|` parameter is present
  • Add various Live Templates to ease working with the `Cro::HTTP`, `Cro::WebApp` and `Red` distributions. For example, typing `cro-http-get` and pressing enter will stub the code for making a HTTP request with `Cro::HTTP::Client`, and allow you to fill in the URL and variables that it declares. It will, if required, add a `use` statement and `depends` entry to the `META6.json`. Typing `red-model` and pressing enter will do similar
  • Improve Pod6 parsing (fix issues with code blocks) and improve live preview (properly render multi-paragraph lists and nested lists)
  • Support completion and resolution for dynamic variables. For now, they are assumed to be visible from anywhere in the project, rather than attempting any kind of call-chain analysis
  • Provide completion of user-defined `is` traits, both from externals and in the project. This is especially useful for things like `is password` from the `Cro::WebApp::Form` module or `is serial` from the `Red` ORM
  • The `Related Symbol` feature now recognizes `Cro::WebApp::Template` templates, allowing jumping from the string literal in e.g. `template "foo.crotmp"` to the corresponding template file, respecting the `template-location` calls
  • Consider `is TypeName` declarations on variables when completing methods (e.g. `my %h is SetHash` will offer `SetHash` methods on `%h`)
  • Support the `of` trait for specifying a type when completing methods (e.g. `my @a of Int; for @a {...}`)