Skip to content

Commit 3f525af

Browse files
committed
Modify InitializeTrackedWorkspaceAsync to recursively walk the project
structure
1 parent 76894aa commit 3f525af

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

CodeiumVS.sln

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ Global
1515
Release|x86 = Release|x86
1616
EndGlobalSection
1717
GlobalSection(ProjectConfigurationPlatforms) = postSolution
18-
{B37F2AE5-CDEC-45B3-944D-8EF912810A12}.Debug|Any CPU.ActiveCfg = Release|Any CPU
19-
{B37F2AE5-CDEC-45B3-944D-8EF912810A12}.Debug|Any CPU.Build.0 = Release|Any CPU
18+
{B37F2AE5-CDEC-45B3-944D-8EF912810A12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19+
{B37F2AE5-CDEC-45B3-944D-8EF912810A12}.Debug|Any CPU.Build.0 = Debug|Any CPU
2020
{B37F2AE5-CDEC-45B3-944D-8EF912810A12}.Debug|arm64.ActiveCfg = Debug|arm64
2121
{B37F2AE5-CDEC-45B3-944D-8EF912810A12}.Debug|arm64.Build.0 = Debug|arm64
2222
{B37F2AE5-CDEC-45B3-944D-8EF912810A12}.Debug|x86.ActiveCfg = Debug|x86

CodeiumVS/LanguageServer/LanguageServer.cs

+21-4
Original file line numberDiff line numberDiff line change
@@ -733,15 +733,19 @@ private async Task InitializeTrackedWorkspaceAsync()
733733
{
734734
await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
735735
DTE dte = (DTE)ServiceProvider.GlobalProvider.GetService(typeof(DTE));
736-
await _package.LogAsync($"Number of projects: {dte.Solution.Projects.Count}");
737-
foreach (EnvDTE.Project project in dte.Solution.Projects)
736+
await _package.LogAsync($"Number of top-level projects: {dte.Solution.Projects.Count}");
737+
738+
List<string> processedProjects = new List<string>();
739+
740+
async Task ProcessProjectAsync(EnvDTE.Project project)
738741
{
739742
try
740743
{
741744
string projectFullName = project.FullName;
742745
await _package.LogAsync($"Project Full Name: {projectFullName}");
743-
if (!string.IsNullOrEmpty(projectFullName))
746+
if (!string.IsNullOrEmpty(projectFullName) && !processedProjects.Contains(projectFullName))
744747
{
748+
processedProjects.Add(projectFullName);
745749
string projectDir = Path.GetDirectoryName(projectFullName);
746750
await _package.LogAsync($"Project Dir: {projectDir}");
747751
AddTrackedWorkspaceResponse response = await AddTrackedWorkspaceAsync(projectDir);
@@ -750,13 +754,26 @@ private async Task InitializeTrackedWorkspaceAsync()
750754
_initializedWorkspace = true;
751755
}
752756
}
757+
758+
// Process sub-projects (e.g., project references)
759+
foreach (EnvDTE.ProjectItem item in project.ProjectItems)
760+
{
761+
if (item.SubProject != null)
762+
{
763+
await ProcessProjectAsync(item.SubProject);
764+
}
765+
}
753766
}
754767
catch (Exception ex)
755768
{
756769
await _package.LogAsync("Error: Failed to initialize tracked workspace: " + ex.Message);
757-
continue;
758770
}
759771
}
772+
773+
foreach (EnvDTE.Project project in dte.Solution.Projects)
774+
{
775+
await ProcessProjectAsync(project);
776+
}
760777
}
761778

762779
private async Task<T?> RequestCommandAsync<T>(string command, object data,

0 commit comments

Comments
 (0)