The official language extension for Expert, Elixir's offical language server.
Expert is currently in pre-1.0 early access. Pull requests and issues are welcome in the offical GitHub repo.
The Expert extension consists of the following components and features:
TextMate grammars that provide syntax highlighting for Elixir source code files (.ex and .exs), including Embedded Elixir (*.eex). For syntax highlighting in HTML-aware Embedded Elixir (*.heex), please install the Phoenix Framework extension.
- Code completions
- On-Demand code formatting (triggered by
Alt + Shift + Fhotkey or enablingeditor.formatOnSave) - Diagnostics (In-editor annotations of compiler warnings and errors)
- Code actions (extract to variable, extract to alias, etc)
- Symbol search (
Command + Thotkey) - File outlines
- Go to definition/reference
- In-editor documentation (on completion and hover)
Expert releases are currently published nightly. This extension will automatically download and install the latest relased from GitHub when starting up.
Alternatively, you may opt to build Expert from source and point this extension at it via the expert.server.releasePathOverride configuration option.
Tells the extension to use a local release of the Expert language server instead of the automatically installed one. This path should point to Expert's executable, typically located at /path/to/expert/apps/expert/burrito_out/expert_darwin_arm64.
Path to a local Elixir source directory; absolute paths are recommended.. When set, go-to-definition on Elixir standard library modules will navigate to source files in this directory instead of returning no result.
Path to the Elixir executable Expert should use for building and running project engines. Expert uses the path as provided without validating it. Remove the setting to clear the override.
Path to the Erlang erl executable Expert should use when resolving project runtimes. Expert uses the path as provided without validating it. Remove the setting to clear the override.
Compiles open Elixir documents after each change to provide file-level diagnostics. Disable this to avoid transient compiler diagnostics while typing. Defaults to true.
Automatically runs mix deps.get when project startup fails because dependencies are missing or stale. Disable this to have Expert ask before fetching dependencies. Defaults to true.
Controls whether notifications are shown after automatic installs of new Expert versions. Defaults to true.
When set to true, the extension will install the latest nightly release of Expert instead of stable releases. Nightly builds contain the latest features but may be less stable. Defaults to false.
Note
During the 0.1.0 release cycle, 0.1.0 release candidates are considered stable releases and will be installed when this setting is false.
The extension provides a language configuration for Elixir which marks do/end and fn/end as brackets. Among other things, this enables colorization of do/end and fn/end with VSCode's editor.bracketPairColorization.enabled setting. While this can be helpful when searching for a do's corresponding end, some users may prefer to use the standard keyword coloring, while still highlighting parenthesis and other brackets. This can be achieved by adding the following to your VSCode configuration.
Expert tentatively targets support for Elixir >= 1.15.3 and OTP >= 25.0.
Expert outputs logs to two different files:
expert.log: Contains logs for the language server node, which handles all the LSP communication, code intelligence, etc.project.log: Contains logs for the project node, which handles loading and compiling your project.
Additionally, the Expert channel in VSCode's Output tab may contain some pertinent information, notably if/when Expert fails to start before log files are initialized.
The syntax highlighting grammar for HEEx (~H sigils and *.heex files) is maintained and provided by the Phoenix Framework extension. While HEEx is quite similar to EEx, it isn't part of Elixir's standard library.
If you are hitting Github's rate limits for unauthenticated users when the extension tries to download Expert releases, you can log in with Github.
Open the command palette (Command + Shift + P), search for "Expert: Sign in with GitHub", and follow the instructions.
If Expert is not finding the correct Elixir or Erlang executables, you can override the paths in the extension's settings. See the expert.server.elixirExecutablePath and expert.server.erlangExecutablePath settings above.
If you have questions or need help, please refer to one of the following channels:
- The
#editor-toolingchannel in the Elixir Discord server
The Expert extension was derived from the vscode-lexical plugin authored by Étienne Lévesque (aka Blond11516).