From 3f2baed6a08ebe25f72f93877be1e60bd60e3050 Mon Sep 17 00:00:00 2001 From: Nick C Date: Wed, 15 Apr 2026 15:55:32 +0200 Subject: [PATCH] docs: Add Dexter language server to Elixir documentation (#53793) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Docs update. - adding 'what is Dexter' one-liner - adding config examples Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [~] Unsafe blocks (if any) have justifying comments - [~] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [~] Tests cover the new/changed behavior - [~] Performance impact has been considered and is acceptable ✅ Elixir LS update - [PR](https://github.com/zed-extensions/elixir/pull/115) merged Release Notes: - N/A --------- Co-authored-by: AltCode --- assets/settings/default.json | 6 ++-- docs/src/languages/elixir.md | 70 ++++++++++++++++++++++++++++++------ 2 files changed, 63 insertions(+), 13 deletions(-) diff --git a/assets/settings/default.json b/assets/settings/default.json index 944ab72b98545bf616224e99a0984c17e1ab3b5c..584c4c4d49d573be8ca600edde638c428bace3e6 100644 --- a/assets/settings/default.json +++ b/assets/settings/default.json @@ -2082,10 +2082,10 @@ "ensure_final_newline_on_save": false, }, "EEx": { - "language_servers": ["elixir-ls", "!expert", "!next-ls", "!lexical", "..."], + "language_servers": ["elixir-ls", "!expert", "!dexter", "!next-ls", "!lexical", "..."], }, "Elixir": { - "language_servers": ["elixir-ls", "!expert", "!next-ls", "!lexical", "!emmet-language-server", "..."], + "language_servers": ["elixir-ls", "!expert", "!dexter", "!next-ls", "!lexical", "!emmet-language-server", "..."], }, "Elm": { "tab_size": 4, @@ -2111,7 +2111,7 @@ }, }, "HEEx": { - "language_servers": ["elixir-ls", "!expert", "!next-ls", "!lexical", "..."], + "language_servers": ["elixir-ls", "!expert", "!dexter", "!next-ls", "!lexical", "..."], }, "HTML": { "prettier": { diff --git a/docs/src/languages/elixir.md b/docs/src/languages/elixir.md index 6724ef177900bab07ee4a07ccb0969e401ae5d18..cc9f498a3d5b65329ccf7a21ef88963cf6119a3d 100644 --- a/docs/src/languages/elixir.md +++ b/docs/src/languages/elixir.md @@ -15,12 +15,13 @@ Elixir support is available through the [Elixir extension](https://github.com/ze - [elixir-lsp/elixir-ls](https://github.com/elixir-lsp/elixir-ls) - [elixir-tools/next-ls](https://github.com/elixir-tools/next-ls) - [lexical-lsp/lexical](https://github.com/lexical-lsp/lexical) + - [remoteoss/dexter](https://github.com/remoteoss/dexter) Furthermore, the extension provides support for [EEx](https://hexdocs.pm/eex/EEx.html) (Embedded Elixir) templates and [HEEx](https://hexdocs.pm/phoenix/components.html#heex) templates, a mix of HTML and EEx used by Phoenix LiveView applications. ## Language Servers -The Elixir extension offers language server support for ElixirLS, Expert, Next LS, and Lexical. By default, only ElixirLS is enabled. You can change or disable the enabled language servers in your settings ({#kb zed::OpenSettings}) under Languages > Elixir/EEx/HEEx or directly within your settings file. +The Elixir extension offers language server support for ElixirLS, Expert, Dexter, Next LS, and Lexical. By default, only ElixirLS is enabled. You can change or disable the enabled language servers in your settings ({#kb zed::OpenSettings}) under Languages > Elixir/EEx/HEEx or directly within your settings file. Some of the language servers can also accept initialization or workspace configuration options. See the sections below for an outline of what each server supports. The configuration can be passed in your settings file via `lsp.{language-server-id}.initialization_options` and `lsp.{language-server-id}.settings` respectively. @@ -51,13 +52,13 @@ Enable Expert by adding the following to your settings file: ```json [settings] "languages": { "Elixir": { - "language_servers": ["expert", "!elixir-ls", "!next-ls", "!lexical", "..."] + "language_servers": ["expert", "!elixir-ls", "!dexter", "!next-ls", "!lexical", "..."] }, "EEx": { - "language_servers": ["expert", "!elixir-ls", "!next-ls", "!lexical", "..."] + "language_servers": ["expert", "!elixir-ls", "!dexter", "!next-ls", "!lexical", "..."] }, "HEEx": { - "language_servers": ["expert", "!elixir-ls", "!next-ls", "!lexical", "..."] + "language_servers": ["expert", "!elixir-ls", "!dexter", "!next-ls", "!lexical", "..."] } } ``` @@ -93,6 +94,55 @@ To use a custom Expert build, add the following to your settings file: } ``` +### Using Dexter + +[Dexter](https://github.com/remoteoss/dexter) is a fast, full-featured Elixir language server optimized for large codebases. It works by parsing source files directly, no compilation required. Supports go-to-definition, references, hover docs, autocompletion, rename, and format on save. + +Enable Dexter by adding the following to your settings file: + +```json [settings] + "languages": { + "Elixir": { + "language_servers": ["dexter", "!expert", "!elixir-ls", "!next-ls", "!lexical", "..."] + }, + "EEx": { + "language_servers": ["dexter", "!expert", "!elixir-ls", "!next-ls", "!lexical", "..."] + }, + "HEEx": { + "language_servers": ["dexter", "!expert", "!elixir-ls", "!next-ls", "!lexical", "..."] + } + } +``` + +Dexter can accept initialization options. + +The following example disables following `defdelegate` to the target function: + +```json [settings] + "lsp": { + "dexter": { + "initialization_options": { + "followDelegates": false + } + } + } +``` + +To use a custom Dexter binary, add the following to your settings file: + +```json [settings] + "lsp": { + "dexter": { + "binary": { + "path": "/path/to/dexter", + "arguments": ["lsp"] + } + } + } +``` + +See the [Dexter documentation](https://github.com/remoteoss/dexter) for more details. + ### Using Next LS Enable Next LS by adding the following to your settings file: @@ -100,13 +150,13 @@ Enable Next LS by adding the following to your settings file: ```json [settings] "languages": { "Elixir": { - "language_servers": ["next-ls", "!expert", "!elixir-ls", "!lexical", "..."] + "language_servers": ["next-ls", "!expert", "!elixir-ls", "!dexter", "!lexical", "..."] }, "EEx": { - "language_servers": ["next-ls", "!expert", "!elixir-ls", "!lexical", "..."] + "language_servers": ["next-ls", "!expert", "!elixir-ls", "!dexter", "!lexical", "..."] }, "HEEx": { - "language_servers": ["next-ls", "!expert", "!elixir-ls", "!lexical", "..."] + "language_servers": ["next-ls", "!expert", "!elixir-ls", "!dexter", "!lexical", "..."] } } ``` @@ -170,13 +220,13 @@ Enable Lexical by adding the following to your settings file: ```json [settings] "languages": { "Elixir": { - "language_servers": ["lexical", "!expert", "!elixir-ls", "!next-ls", "..."] + "language_servers": ["lexical", "!expert", "!elixir-ls", "!dexter", "!next-ls", "..."] }, "EEx": { - "language_servers": ["lexical", "!expert", "!elixir-ls", "!next-ls", "..."] + "language_servers": ["lexical", "!expert", "!elixir-ls", "!dexter", "!next-ls", "..."] }, "HEEx": { - "language_servers": ["lexical", "!expert", "!elixir-ls", "!next-ls", "..."] + "language_servers": ["lexical", "!expert", "!elixir-ls", "!dexter", "!next-ls", "..."] } } ```