tailwind: Check user settings for classAttributes (#13923)

This addresses the question in [this

comment](https://github.com/zed-industries/zed/issues/5830#issuecomment-2211942554)
by adding support for `classAttributes` to the settings.

Meaning that the following Zed `settings.json` now works:

```jsonc
{
  "lsp": {
    "tailwindcss-language-server": {
      "settings": {
        "classAttributes": [
          "class",
          "className",
          "ngClass",

          // add styles so will give intellisense to styles constant.
          "styles"
        ]
        // Optional:
        // "includeLanguages": {
        //   "erb": "html",
        //   "ruby": "html"
        // },
        // "experimental": {
        //   "classRegex": ["\\bclass:\\s*['\"]([^'\"]*)['\"]"]
        // }
      }
    }
  }
}
```



Release Notes:

- Added support for setting `classAttributes` in the configuration for
`tailwindcss-language-server`. Example: `{ "lsp": {
"tailwindcss-language-server": { "settings": { "classAttributes": [
"class", "className", "ngClass", "styles" ] } } } }`
This commit is contained in:
Thorsten Ball 2024-07-08 08:39:08 +02:00 committed by GitHub
parent ab83820b6e
commit a1eaf1bb3c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -158,26 +158,25 @@ impl LspAdapter for TailwindLspAdapter {
.unwrap_or_default()
})?;
// We need to set this to null if it's not set, because tailwindcss-languageserver
// will check whether it's an object and if it is (even if it's empty) it will
// ignore the `userLanguages` from the initialization options.
let include_languages = tailwind_user_settings
.get("includeLanguages")
.cloned()
.unwrap_or(Value::Null);
let experimental = tailwind_user_settings
.get("experimental")
.cloned()
.unwrap_or_else(|| json!([]));
Ok(json!({
let mut configuration = json!({
"tailwindCSS": {
"emmetCompletions": true,
"includeLanguages": include_languages,
"experimental": experimental,
}
}))
});
if let Some(experimental) = tailwind_user_settings.get("experimental").cloned() {
configuration["tailwindCSS"]["experimental"] = experimental;
}
if let Some(class_attributes) = tailwind_user_settings.get("classAttributes").cloned() {
configuration["tailwindCSS"]["classAttributes"] = class_attributes;
}
if let Some(include_languages) = tailwind_user_settings.get("includeLanguages").cloned() {
configuration["tailwindCSS"]["includeLanguages"] = include_languages;
}
Ok(configuration)
}
fn language_ids(&self) -> HashMap<String, String> {