Nimblesite / Nimblesite/SharpLsp
F# sidecar loads only the first .fsproj discovered — multi-project F# workspaces mostly unanalyzed
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 132
- Forks
- 5
- Avg merge
- 6h 24m
- Merged PRs (30d)
- 27
Description
From the multi-agent audit (sidecars/SharpLsp.Sidecar.FSharp/FSharpWorkspace.fs ~167): workspace load picks the FIRST .fsproj found, in filesystem-enumeration order. A solution with several F# projects gets exactly one loaded — files from the others check against a synthetic single-file project (no project references, wrong defines), so cross-project navigation and diagnostics silently degrade, and WHICH project wins is nondeterministic across machines.
F# is a first-class citizen: this needs parity with the C# sidecar's whole-solution load — enumerate every .fsproj in the .sln/.slnx (the shared solution reader already exists), maintain FSharpProjectOptions per project, and route file requests to their owning project.
The new e2e fixture create_medium_workspace() (tests/e2e_modules/fixtures_medium.rs) provides a mixed solution to extend for this.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with sidecars/SharpLsp.Sidecar.FSharp/FSharpWorkspace.fs around the workspace-loading logic, then compare it with the C# sidecar's whole-solution behavior and the shared solution reader. Extend tests/e2e_modules/fixtures_medium.rs via create_medium_workspace() to cover multiple F# projects. Done means every project is loaded with its own options and file requests route to the owning project.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- fsharp, rust
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100