Add working directories for eslint (#9738)

Hans and Thorsten Ball created

Fix #9648 

Release notes:

- Added ability to configure ESLint's `workingDirectories` in settings.
Example:
`{"lsp":{"eslint":{"settings":{"workingDirectories":["./client","./server"]}}}}`.
#9648

---------

Co-authored-by: Thorsten Ball <mrnugget@gmail.com>

Change summary

crates/languages/src/typescript.rs |  4 ++++
docs/src/languages/javascript.md   | 16 ++++++++++++++++
2 files changed, 20 insertions(+)

Detailed changes

crates/languages/src/typescript.rs 🔗

@@ -277,6 +277,9 @@ impl LspAdapter for EsLintLspAdapter {
         let use_flat_config = Self::FLAT_CONFIG_FILE_NAMES
             .iter()
             .any(|file| workspace_root.join(file).is_file());
+        let working_directories = eslint_user_settings
+            .get("workingDirectories")
+            .unwrap_or(&Value::Null);
 
         json!({
             "": {
@@ -292,6 +295,7 @@ impl LspAdapter for EsLintLspAdapter {
                 },
                 "problems": {},
                 "codeActionOnSave": code_action_on_save,
+                "workingDirectories": working_directories,
                 "experimental": {
                     "useFlatConfig": use_flat_config,
                 },

docs/src/languages/javascript.md 🔗

@@ -85,3 +85,19 @@ You can configure ESLint's `nodePath` setting (requires Zed `0.127.0`):
   }
 }
 ```
+
+#### Configure ESLint's `workingDirectories`:
+
+You can configure ESLint's `workingDirectories` setting (requires Zed `0.130.x`):
+
+```json
+{
+  "lsp": {
+    "eslint": {
+      "settings": {
+        "workingDirectories": ["./client", "./server"]
+      }
+    }
+  }
+}
+```