From 4305689a937e5da84ba5b6f635d4e90ccd915d08 Mon Sep 17 00:00:00 2001 From: Riccardo Strina Date: Tue, 28 Apr 2026 18:44:03 +0200 Subject: [PATCH] Add workspaceFolders default to Java LSP options Automatically inject workspaceFolders with the worktree root URI if not already configured by the user. --- src/java.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/java.rs b/src/java.rs index 9a75d9c..89385dd 100644 --- a/src/java.rs +++ b/src/java.rs @@ -385,10 +385,20 @@ impl Extension for Java { .map_err(|err| format!("Failed to get LSP settings for worktree: {err}"))? .unwrap_or_else(|| json!({})); + // Inject workspaceFolders default if not already set by the user + let options_obj = options.as_object_mut().unwrap(); + if !options_obj.contains_key("workspaceFolders") { + let root = worktree.root_path(); + let uri = if root.starts_with('/') { + format!("file://{root}") + } else { + format!("file:///{}", root.replace('\\', "/")) + }; + options_obj.insert("workspaceFolders".to_string(), json!([uri])); + } + // Inject extendedClientCapabilities defaults if not already set by the user - let caps = options - .as_object_mut() - .unwrap() + let caps = options_obj .entry("extendedClientCapabilities") .or_insert_with(|| json!({})); let caps_obj = caps.as_object_mut().unwrap();