- HEEx: support new syntax for embedding Elixir code with curly braces.
- Elixir: improved matching of right-arrow clauses.
- Elixir: recognize SQL strings inside
query("..."),query(Repo, "..."),query_many("..."),query_many(Repo, "...")(including bang versions). - Elixir: fixed expressions in struct headers, e.g.:
%^module{}and%@module{}. - Elixir: recognize all variants of atom word strings, e.g.:
~w"one two three"a - Elixir: fixes to capture expressions:
& 1is a capture with an integer, not the capture argument&1.& &1.func/2,&var.member.func/3and&@module.func/1are captured remote functions. - HEEx: recognize special attributes
:let,:forand:if. - HEEx: fixed matching dynamic attributes, e.g.:
<div {@dynamic_attrs} />. - Commands:
mix_testis better at finding the rootmix.exsfile and runs when the project hasn't been built yet. - Commands:
mix testandmix formaterror locations can be double-clicked and jumped to. - Commands: read
mixoutput unbuffered for immediate display in the output panel. - Commands: removed the
output_scroll_timesetting. The output will scroll automatically without delay. - Commands: run
mix testwith selected lines if no standardtestblocks were found, allowing to run tests defined by macros such asproperty/2. - Commands: prevent executing
mix testagain if it's already running. - Completions: use double quotes instead of curly braces for
phxattributes.
- EEx, HEEx: use
<%!-- ... --%>when toggling comments. - EEx, HEEx, Surface: highlight begin and end punctuation marks of comments.
- Commands: fix: filter out already selected tests when using multi-cursor selections.
- Elixir: fixed module function call regression in captures (
&Map.take(&1, @fields)). - Elixir: recognize special macro
defmacro (..) do end. - Commands: added
mix_test_hide_panelcommand.
- Elixir: fixed quoted module name function calls such as
:"Elixir.Kernel".in(1, [1]). - SQL: recognize
CREATE TYPE.
- Commands: improved/generalized syntax detection for enabling/disabling commands.
- Commands: fix: output both stdout/stderr when running
mix format/mix test. - Commands: auto-scroll
mix formatoutput when it's compiling. - SQL: recognize
FILTERinarray_agg(x) FILTER (...).
- Elixir: recognize
nameindefmodule name do end. - Commands: fix: print
mix formaterror output asynchronously. - Commands: fix: hide the
mix formaterror panel when the command is successful again.
- Commands: fix: call
mix formatasynchronously to avoid locking up the view.
- Package: fix: added
dependencies.jsonto require thepathliblibrary (#53).
- Commands: recognize more file types to allow running
mix formaton. - Commands: mention possibly unsaved changes when a test wasn't found.
- Commands: fixed
mix formatandmix testin non-project windows. - Commands: fixed finding counterpart of a test/code file in non-project windows.
- Commands: ignore
.elixir_ls,_buildanddepsfolders when searching for the counterpart of a test/code file.
- Commands: added
mix_test_show_panel,mix_test_switch_to_code_or_test,search_hex_packagesandopen_hex_docs.Mix Test: Show Panelreopens the test output panel if closed.Mix Test: Switch to Code or Testjumps to the corresponding code file of a test and vice versa.ElixirSyntax: Open Hex Docsdisplays a filterable list of all available projects on hexdocs.pm.ElixirSyntax: Search Hex Packagessearches for packages on hex.pm and displays the results in a list.
- Palette: added
Mix Test: All. - Palette: renamed caption
Mix Test: Set SeedtoMix Test: Set --seed.
- Elixir: removed Markdown highlighting from doc comments due to unfixable issues.
- Elixir: properly highlight arrow clauses in
for-statement arguments. - Elixir: match macro and record calls inside parameters and arrow clauses (
for module(module: module) <- all_modules). - Elixir: fixed stepped ranges as parameters (
first..last//step). - Elixir: fixed string interpolations clearing all scopes (
"2^8 = #{2 ** 8}"). - Commands: added Python code to be able to call
mix testin various ways. - Commands: added
mix_format_projectandmix_format_filecommands with auto-format setting. - Palette: added
Mix Test: ...andMix Format: ...commands. - EEx: added syntax file for EEx in plain text files.
- HTML (EEx), Elixir (EEx): added
<%!-- ... --%>multi-line comments. - HTML (EEx): match EEx tags as tag and attribute names (
<tag <%= @attr %>="value"/>). - HTML (HEEx): fixed matching function names in tags.
- HTML (HEEx): match phx binding attributes.
- Elixir (EEx): fixed matching comments (
<%# ... %>). - SQL: fixed matching decimal numbers.
- SQL: fixed matching quoted member ids (
a_table."a column"). - Snippets: added
dbgkeyword for|> dbg(). - Snippets: added EEx tags.
- Snippets: added Elixir
#{...}string interpolation. - Snippets: added
require IEx; IEx.pry()string interpolation. - Completions: added Phoenix LiveView attribute bindings.
- Completions: added Surface tag attributes.
- Preferences: added increase / decrease indentation settings (thanks to @timfjord).
- Builds: added
elixircandmix compile. - Menus: added "ElixirSyntax" to "Preferences > Package Settings".
- Syntaxes: refactored Surface/HEEx/EEx with many improvements (thanks to @deathaxe).
- Themes: slightly darken the embed punctuation markers for Surface and (H)EEx tags.
- Elixir: allow digits in sigil string modifiers.
- Preferences: index Elixir
@attributedefinitions for "Goto Definition".
- Syntax: added support for the HEEx template syntax inside the
~Hsigil. - Syntax: added support for the Surface template syntax inside the
~Fsigil. - Elixir: match the
**power operator. - HTML (EEx): switched to version 2 and removed usage of
with_prototype. - SQL: match the
;token; fixed the/**/comment scope. - Themes: highlight interpolated Elixir with a lighter background.
- Themes: don't italicize the sigil type.
- Elixir: disabled highlighting Elixir code within Markdown comments. Reasons:
- Not completely reliable.
- Not all Elixir code was recognized.
- Can be distracting.
- Probably affects speed.
- If you'd like to re-enable this feature, override the package and uncomment the relevant lines.
- Elixir: added
meta.type.elixirscope to specs and types. - Elixir: added
meta.doc.elixirscope to doc attributes. - Elixir: highlight an atom with a function call as a module constant:
:lists.sort([]) - Elixir: recognize a record's name as an entity symbol for "Goto Definition".
- Elixir: recognize
recordas a special keyword in type declarations:
@type t :: record(:user, name: binary, age: integer) - Elixir: fix: stop highlighting params after
whenin free-form functions:def a + b when a == 0 and b == 0 - Elixir: fixed lambda calls in capture expressions:
&fun.(&1, &2) - Elixir: consider a line continuation backslash to be the start of an argument list:
with \ {:ok, _} <- newline do end
- Elixir: allow
unquoteandunquote_splicingto have arguments without parentheses. - Elixir: match
.:as an atom keyword. - Elixir:
^^is not an operator. - Themes: don't italicize parameters in Monokai.
- Themes: completely italicize types and specs, except for
::,|and strings. - SQL: highlight
WITH ORDINALITYandAT TIME ZONE. - Builds: removed
$from the file names so they're correctly displayed in the menu.
- Elixir: also highlight
catch,else,afterclauses in function do-end blocks. - Elixir: use own scopes for
afterandrescuekeywords. - Elixir: allow commas inside item access brackets, e.g.:
%{}[a: 1, b: 2] - Elixir: fixed: some multi-line when-type clauses were not matched correctly.
- Elixir: don't match
def func()as a type after writing a|in a type spec. - Elixir: use greedy matching for identifiers and atoms as well.
- Elixir: the
meta.mapping.elixirscope wasn't set correctly for maps. - SQL: fixed escapes breaking strings, e.g.:
fragment("? = '\"string\"'::jsonb", x)
- Elixir: use greedy matching for module names.
- Elixir: moved syntax and color-scheme files into sub-folders.
- Elixir: highlight EEx tags inside comments.
- Elixir: fixed a bug where a comma was seen as invalid, such as in
if a == nil, .... - SQL: added decimal number highlighting.
- SQL: added general function-call syntax matching.
- SQL: removed
support.function.psqlscope to simplify the file.
- Elixir: fixed a bug affecting, for example, multi-line
withstatements. - Elixir: fixed captures such as
&MyApp.User |> f(&1). - Elixir: fixed matching iex continuation lines (
...>) in markdown comments. - SQL: highlight
BYas a standalone keyword.
The Elixir syntax definition has been reworked amounting to a complete rewrite bringing among other things the following features and improvements:
- Type highlighting in
@spec,@type,@typep,@opaque,@callbackand@macrocallback. - Parameter highlighting (also in
fn,case,with,for,tryandreceive). - Function call highlighting (e.g.
inspect error,Enum.map(...)). - Highlight
as: Aargument in alias/require statements. - Better matching for
def/defmodule/etc. statements. - Highlight quoted member variables/functions (e.g.
:erlang."=/="(1, 2)). - Fixes to strings, numerics, escapes, captures etc.
- Newest Elixir operators and functions.
- Highlight LiveView, YAML and JSON strings.
- Syntax definition for EEx in Elixir, e.g.:
defmodule <%= @module %>.View do end - Some keywords are variables depending on the context (e.g.
def = 0). - Markdown highlighting within
@doccomments and also Elixir code examples. - Highlight SQL (e.g. jsonb operators) inside the Ecto
fragment()function but also insidesql("INSERT INTO ..."). - Git merge conflicts are highlighted.
- Added Monokai and Mariana theme color scheme rules.
- Correct scope for symbol names for the "Goto Definition" command.
- Speed optimizations: rules and regexps are ordered in such a way that they match the most likely occurring tokens first.
- Snippets for
|> IO.inspect(label: "..."),|> then()and|> tap(). - Extensive test-suite containing countless checks to ensure quality and avoid regressions.
- Fixed Github CI syntax tests job.
Thanks @dkarter
- Allow leex file to be picked up
Thanks to @azizk again
- We now have regex syntax highlighting
- EEx syntax highlighting now reuses html definition and interpolates Elixir parts into it
- various fixes on general Elixir syntax definition
- comprehensive sublime syntax tests
Thanks to @azizk
- Also apply syntax to files with elixirc and iex in hashbang
- Module names can only have ASCII letters, fixed regex to do that
- Highlight module names as normal atoms when found in map/kwlist keys
- Highlight unicode identifers for atoms, variables and function names
- Add Comment so we don't need https://github.com/elixir-editors/elixir-tmbundle alongside
- Fix binary
^^^highlight - Highlight more operators
- Add HTML (EEX)