Elixir
Elixir 支持可通过 Elixir 扩展 获得。
- Tree-sitter:
- 语言服务器:
选择语言服务器
Elixir 扩展为 expert、elixir-ls、next-ls 和 lexical 提供语言服务器支持。
默认启用 elixir-ls。
Expert
在设置 ({#kb zed::OpenSettings}) 中于 语言 > Elixir 下配置语言服务器,或将其添加到您的设置文件中:
"languages": {
"Elixir": {
"language_servers": ["expert", "!elixir-ls", "!next-ls", "!lexical", "..."]
},
"HEEX": {
"language_servers": ["expert", "!elixir-ls", "!next-ls", "!lexical", "..."]
}
}Next LS
在设置 ({#kb zed::OpenSettings}) 中于 语言 > Elixir 下配置语言服务器,或将其添加到您的设置文件中:
"languages": {
"Elixir": {
"language_servers": ["next-ls", "!expert", "!elixir-ls", "!lexical", "..."]
},
"HEEX": {
"language_servers": ["next-ls", "!expert", "!elixir-ls", "!lexical", "..."]
}
}Lexical
在设置 ({#kb zed::OpenSettings}) 中于 语言 > Elixir 下配置语言服务器,或将其添加到您的设置文件中:
"languages": {
"Elixir": {
"language_servers": ["lexical", "!expert", "!elixir-ls", "!next-ls", "..."]
},
"HEEX": {
"language_servers": ["lexical", "!expert", "!elixir-ls", "!next-ls", "..."]
}
}设置 elixir-ls
- 安装
elixir:
brew install elixir- 安装
elixir-ls:
brew install elixir-ls- 重启 Zed
如果
elixir-ls在 elixir 项目中没有运行,请通过命令面板操作zed: open log检查错误日志。如果您发现错误消息提及:invalid LSP message header "Shall I install Hex? (if running non-interactively, use \"mix local.hex --force\") [Yn],您可能需要安装Hex。您可以从命令行运行elixir-ls并接受提示以安装Hex。
使用 Mix 进行格式化
如果您更喜欢使用 Mix 格式化代码,请将其配置为外部格式化程序。格式化将在文件保存时进行。
在设置 ({#kb zed::OpenSettings}) 中于 语言 > Elixir 下配置格式化,或将其添加到您的设置文件中:
{
"languages": {
"Elixir": {
"format_on_save": "on",
"formatter": {
"external": {
"command": "mix",
"arguments": ["format", "--stdin-filename", "{buffer_path}", "-"]
}
}
}
}
}其他工作区配置选项
您可以通过设置文件中的 lsp 设置(如何编辑)传递额外的 elixir-ls 工作区配置选项。
以下示例禁用了 dialyzer:
"lsp": {
"elixir-ls": {
"settings": {
"dialyzerEnabled": false
}
}
}有关更多选项,请参阅 ElixirLS 配置设置。
HEEx
Zed 也支持 HEEx 模板。HEEx 是 EEx(嵌入式 Elixir)和 HTML 的混合体,用于 Phoenix LiveView 应用程序中。
- Tree-sitter: phoenixframework/tree-sitter-heex
在 HEEx 中使用 Tailwind CSS 语言服务器
要在 HEEx 文件中获得 Tailwind CSS 语言服务器 的所有功能(自动补全、代码检查和悬停文档),请将以下内容添加到您的设置文件中(如何编辑):
{
"lsp": {
"tailwindcss-language-server": {
"settings": {
"includeLanguages": {
"phoenix-heex": "html"
},
"experimental": {
"classRegex": ["class=\"([^\"]*)\"", "class='([^']*)'"]
}
}
}
}
}使用这些设置,您将在 HEEX 模板文件中获得 Tailwind CSS 类的补全。示例:
<%!-- 标准类属性 --%>
<div class="flex items-center <completion here>">
<p class="text-lg font-bold <completion here>">Hello World</p>
</div>
<%!-- 使用 Elixir 表达式 --%>
<div class={"flex #{@custom_class} <completion here>"}>
Content
</div>
<%!-- 使用 Phoenix 函数 --%>
<div class={class_list(["flex", "items-center", "<completion here>"])}>
Content
</div>