Ruby
可以通过 Ruby 扩展 获得 Ruby 支持。
Ruby 扩展还提供对 ERB 文件的支持。
选择语言服务器
Ruby 扩展同时提供 solargraph
和 ruby-lsp
语言服务器支持。
solargraph
默认启用。
要切换到 ruby-lsp
,请将以下内容添加到 settings.json
{
"languages": {
"Ruby": {
"language_servers": ["ruby-lsp", "!solargraph", "!rubocop", "..."]
}
}
}
Ruby 扩展还提供对 rubocop
语言服务器的支持,用于违规检测和自动更正。要启用它,请将以下内容添加到 settings.json
{
"languages": {
"Ruby": {
"language_servers": ["rubocop", "ruby-lsp", "!solargraph", "..."]
}
}
}
设置 solargraph
Zed 当前不会自动安装 Solargraph。要使用 Solargraph,你需要安装 gem。Zed 只会在你的 PATH
中查找名为 solargraph
的可执行文件。
您可以使用以下命令手动安装 gem
gem install solargraph
或者,如果您的项目使用 Bundler,您可以将 Solargraph gem 添加到您的 Gemfile
gem 'solargraph', group: :development
Solargraph 默认禁用格式化和诊断。我们可以通过将以下内容添加到您的 settings.json
来告诉 Zed 启用它们
{
"lsp": {
"solargraph": {
"initialization_options": {
"diagnostics": true,
"formatting": true
}
}
}
}
配置
Solargraph 从项目根目录中名为 .solargraph.yml
的文件中读取其配置。有关此文件的更多信息,请参阅 Solargraph 配置文档。
设置 ruby-lsp
Zed 目前不会自动安装 Ruby LSP。要使用 Ruby LSP,您需要安装 gem。Zed 只会在您的 PATH
中查找名为 ruby-lsp
的可执行文件。
您可以使用以下命令手动安装 gem
gem install ruby-lsp
Ruby LSP 使用拉取式诊断,而 Zed 还不支持。我们可以通过将以下内容添加到您的 settings.json
来告诉 Zed 禁用它
{
"lsp": {
"ruby-lsp": {
"initialization_options": {
"enabledFeatures": {
"diagnostics": false
}
}
}
}
}
设置 rubocop
LSP
Zed 目前不会自动安装 rubocop
。要使用 rubocop
,您需要安装 gem。Zed 只会在您的 PATH
中查找名为 rubocop
的可执行文件。
您可以使用以下命令手动安装 gem
gem install rubocop
Rubocop 默认禁用不安全的自动更正。我们可以通过将以下内容添加到您的 settings.json
来告诉 Zed 启用它
{
"lsp": {
"rubocop": {
"initialization_options": {
"safeAutocorrect": false
}
}
}
}
使用 Tailwind CSS 语言服务器和 Ruby
可以在 Ruby 和 ERB 文件中使用 Tailwind CSS 语言服务器。
为此,您需要配置语言服务器,以便它知道在 Ruby/ERB 文件中查找 CSS 类的位置,方法是将以下内容添加到您的 settings.json
{
"languages": {
"Ruby": {
"language_servers": ["tailwindcss-language-server", "..."]
}
},
"lsp": {
"tailwindcss-language-server": {
"settings": {
"includeLanguages": {
"erb": "html",
"ruby": "html"
},
"experimental": {
"classRegex": ["\\bclass:\\s*['\"]([^'\"]*)['\"]"]
}
}
}
}
}
使用这些设置,您将获得 ERB 文件中 HTML 属性中的 Tailwind CSS 类和在 class:
键之后出现的 Ruby/ERB 字符串中的自动完成。示例
# Ruby file:
def method
div(class: "pl-2 <completion here>") do
p(class: "mt-2 <completion here>") { "Hello World" }
end
end
# ERB file:
<%= link_to "Hello", "/hello", class: "pl-2 <completion here>" %>
<a href="/hello" class="pl-2 <completion here>">Hello</a>