ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

Elixir​Syntax

The most powerful Elixir for the most Sublime experience.

Details

Installs

  • Total 6K
  • Win 1K
  • Mac 3K
  • Linux 2K
Jul 26 Jul 25 Jul 24 Jul 23 Jul 22 Jul 21 Jul 20 Jul 19 Jul 18 Jul 17 Jul 16 Jul 15 Jul 14 Jul 13 Jul 12 Jul 11 Jul 10 Jul 9 Jul 8 Jul 7 Jul 6 Jul 5 Jul 4 Jul 3 Jul 2 Jul 1 Jun 30 Jun 29 Jun 28 Jun 27 Jun 26 Jun 25 Jun 24 Jun 23 Jun 22 Jun 21 Jun 20 Jun 19 Jun 18 Jun 17 Jun 16 Jun 15 Jun 14 Jun 13 Jun 12 Jun 11
Windows 0 1 0 0 0 0 1 1 0 0 2 0 0 0 2 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 2 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0
Mac 1 1 1 2 1 0 0 1 2 0 2 0 2 0 0 2 1 1 1 2 0 0 1 3 1 0 1 1 1 2 0 2 1 1 0 0 1 3 2 1 0 0 3 1 1 2
Linux 1 1 1 0 1 0 0 0 0 2 1 2 0 1 1 2 2 0 1 0 1 0 1 0 1 2 0 0 2 0 1 0 3 1 0 1 2 1 2 2 1 0 2 1 1 0

Readme

Source
raw.​githubusercontent.​com

ElixirSyntax

ElixirSyntax was initially based on the Elixir.tmbundle package but has been rewritten since, providing more accurate syntax matching as well as better syntax highlighting.

Features

  • Working Goto Definition command.
  • HTML template highlighting:
    • HEEx:
    • Surface:
    • LiveView:
  • Full PCRE syntax highlighting:
  • Type highlighting:
  • Theme adaptations for Mariana and Monokai.
  • Palette commands: ElixirSyntax: ..., Mix Test: ..., Mix Format: ...
  • Build commands: mix format, mix test, elixir $file
  • Snippets for IO.inspect, tap and then.

Some syntax highlighting features are not immediately evident. Among them are:

The fragment and sql functions

SQL syntax is highlighted inside Ecto's fragment macro.

Add an sql macro/function to your project to enjoy SQL highlighting anywhere it's used.

The JSON ~j and ~J sigils (Jason)

Embed JSON strings in your Elixir code. Notice the interpolated Elixir code is colored correctly.

The YAML ~y and ~Y sigils (YamlElixir)

Testing

Build-files as well as commands are provided for calling mix test. The predefined shortcuts can be changed via Preferences > Package Settings > ElixirSyntax > Key Bindings.

Tip: To run specific tests in the current file, mark them with multiple cursors and/or spanning selections and press Alt+Shift+T or choose Mix Test: Selection(s) from the palette.

ElixirSyntax stores a per-project JSON settings file in the root folder that contains both the mix.exs file and the _build/ folder. They override the general settings below.

General settings example (via Preferences > Package Settings > ElixirSyntax > Settings):

{
  "mix_test": {
    "output": "tab",
    "output_mode": null,
    "output_scroll_time": 2,
    "args": ["--coverage"],
    "seed": null
  }
}

When a mix test command is run the first time, a mix_test.repeat.json file is stored in the _build/ folder to remember the command arguments. By pressing Alt+Shift+R or running Mix Test: Repeat from the palette you can repeat the previously executed tests.

Formatting

Use the default shortcut Alt+Shift+F or the palette command Mix Format: File to format your Elixir code. Format the whole project via Mix Format: Project / Folder. Configure auto-formatting on save via the palette command Mix Format: Toggle Auto-Formatting or via the menu Preferences > Package Settings > ElixirSyntax > Settings. There is no per-project auto-format setting yet.

{
  "mix_format": {
    "on_save": true
  }
}

Palette commands

  • ElixirSyntax: Settings
  • ElixirSyntax: Open Hex Docs
  • ElixirSyntax: Search Hex Packages
  • Mix Test: Settings
  • Mix Test: All
  • Mix Test: File
  • Mix Test: Selection(s)
  • Mix Test: Failed
  • Mix Test: Repeat
  • Mix Test: Set --seed
  • Mix Test: Toggle --stale Flag
  • Mix Test: Switch to Code or Test
  • Mix Test: Show Panel
  • Mix Format: File
  • Mix Format: Project / Folder
  • Mix Format: Toggle Auto-Formatting

Recommended packages

  • LSP and LSP-elixir for intelligent code completion and additional snippet suggestions.

Changes

See CHANGELOG.md for the list of releases and noteworthy changes.

FAQ

  • How to color unused variables, e.g. _opts, differently?

You can customize the color of unused variable names by extending your color scheme, targeting the variable.parameter.unused and variable.other.unused scopes:

{
    "rules": [
      {
        "name": "Unused variables",
        "scope": "variable.parameter.unused, variable.other.unused",
        "foreground": "#8c8cff"
      }
    ]
  }

More details at Sublime Text Docs

Contributors/Maintainers

  • @azizk rewrote the whole syntax definition with an extensive test-suite and added a wealth of new features. ⭐
  • @princemaple initially brought the tm-syntax to sublime-syntax and made some improvements.