Add Tailwind autocomplete for Vue (#10078)

RenΓ© created

This fixes #4403 by adding TailwindLsp to .vue files too and
autocomplete aswell


![image](https://github.com/zed-industries/zed/assets/49145060/8b06a478-cade-4cbc-9da7-f31f5197f304)

Release Notes:

- Added Tailwind support in `.vue` files
([#4403](https://github.com/zed-industries/zed/issues/4403)).

Change summary

crates/languages/src/lib.rs            | 5 ++++-
crates/languages/src/tailwind.rs       | 1 +
crates/languages/src/vue/config.toml   | 5 +++++
crates/languages/src/vue/overrides.scm | 7 +++++++
4 files changed, 17 insertions(+), 1 deletion(-)

Detailed changes

crates/languages/src/lib.rs πŸ”—

@@ -312,7 +312,10 @@ pub fn init(
     language!("ocaml-interface", vec![Arc::new(ocaml::OCamlLspAdapter)]);
     language!(
         "vue",
-        vec![Arc::new(vue::VueLspAdapter::new(node_runtime.clone()))]
+        vec![
+            Arc::new(vue::VueLspAdapter::new(node_runtime.clone())),
+            Arc::new(tailwind::TailwindLspAdapter::new(node_runtime.clone())),
+        ]
     );
     language!("proto");
     language!("terraform", vec![Arc::new(terraform::TerraformLspAdapter)]);

crates/languages/src/tailwind.rs πŸ”—

@@ -127,6 +127,7 @@ impl LspAdapter for TailwindLspAdapter {
             ("HEEX".to_string(), "phoenix-heex".to_string()),
             ("ERB".to_string(), "erb".to_string()),
             ("PHP".to_string(), "php".to_string()),
+            ("Vue.js".to_string(), "vue".to_string()),
         ])
     }
 }

crates/languages/src/vue/config.toml πŸ”—

@@ -14,4 +14,9 @@ brackets = [
     { start = "`", end = "`", close = true, newline = false, not_in = ["string"] },
 ]
 word_characters = ["-"]
+scope_opt_in_language_servers = ["tailwindcss-language-server"]
 prettier_parser_name = "vue"
+
+[overrides.string]
+word_characters = ["-"]
+opt_into_language_servers = ["tailwindcss-language-server"]