ionide / ionide-vscode-fsharp

VS Code plugin for F# development
http://ionide.io
MIT License
850 stars 276 forks source link

[WIP] Lazy load projects #1957

Open purkhusid opened 8 months ago

purkhusid commented 8 months ago

WHAT

🤖 Generated by Copilot at 0f51003

This pull request adds a new feature for Ionide that allows users to enable or disable lazy loading of F# projects in the workspace. Lazy loading improves the performance and memory usage of Ionide when working with large or complex solutions by loading the projects on demand when opening F# files. The feature involves changes in several modules, such as Project, SolutionExplorer, DTO, MSBuild, and fsharp, and a new option in package.json.

🤖 Generated by Copilot at 0f51003

Oh, we're the coders of Ionide, and we work on F# all day We load the projects lazily, to save some memory We pass the ExtensionContext to the initWorkspace function And we heave ho, on the count of three, to update the WorkspacePeek junction

🚀🌲🛠️

WHY

This is a WIP PR to see if it's possible to lazy load projects to make Ionide a bit nicer to use in large repositories

HOW

🤖 Generated by Copilot at 0f51003

purkhusid commented 8 months ago

@baronfel @TheAngryByrd This is an proof of concept of lazy loading projects as the end user opens up .fs files. The FSAC and proj-info parts can be found here: https://github.com/fsharp/FsAutoComplete/pull/1191 https://github.com/ionide/proj-info/pull/198

purkhusid commented 8 months ago

I tried out this solution on our internal monorepo and it worked pretty well. There is a lot of stuff missing from this proof of concept but I just wanted to get some feedback before I spend too much time on this.