Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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, andfsharp, and a new option inpackage.json.🤖 Generated by Copilot at 0f51003
🚀🌲🛠️
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
FSharp.lazyLoadWorkspaceto enable lazy loading of F# projects in the workspace (link)Projectmodule to implement the lazy loading feature, which loads the corresponding project on demand when opening an F# file, instead of loading all the projects in the workspace at once (link, link)Projectmodule to take anExtensionContextparameter in theinitWorkspaceandinitWorkspaceHelperfunctions, which is needed to register the event handler for opening F# files (link, link, link)DTOmodule to add a new record typeWorkspacePeekFsproj, which represents an F# project file with its compile items, and change theWorkspacePeekFound.Directorytype to contain an array ofWorkspacePeekFsprojrecords instead of strings (link, link)Projectmodule to map theWorkspacePeekFsprojrecords to strings or tuples of project file paths and compile items, as needed by the existing functions that return or take lists or arrays of project file paths (link, link, link, link)SolutionExplorerandfsharpmodules to pass theExtensionContextparameter to theProject.initWorkspacefunction, which now requires it as part of the lazy loading feature (link, link, link)SolutionExplorermodule to take a string parameter instead of aWorkspacePeekFsprojrecord in thegetProjItemfunction, which is used to create the solution explorer tree (link)release/package.jsonfile (link)