Skip to content

Add internal silent find-all-references command#14281

Draft
carsonRadtke wants to merge 1 commit intomainfrom
dev/carsonradtke/bifurcate-far-requests-by-sender
Draft

Add internal silent find-all-references command#14281
carsonRadtke wants to merge 1 commit intomainfrom
dev/carsonradtke/bifurcate-far-requests-by-sender

Conversation

@carsonRadtke
Copy link
Member

@carsonRadtke carsonRadtke commented Mar 16, 2026

Introduce an internal C_Cpp.FindAllReferences command that issues the existing cpptools/findAllReferences request without joining the workspaceReferences single-flight cancellation path.

Extract the shared request and confirmed-location mapping logic from FindAllReferencesProvider so the existing vscode.executeReferenceProvider flow and the new silent command use the same request translation and cancellation handling for server-side cancel responses.

Keep the interactive provider behavior unchanged: user-invoked references still cancel prior work, reset reference progress state, and update the ReferencesManager UI. The new command resolves the owning client from the target URI and returns locations without progress UI, preview notifications, or references panel updates, enabling concurrent silent callers such as Copilot.

Is part of a fix to ADO:2826103 and ADO:2741397 along with internal changes to the cpptools server and the devtools extension.

Introduce an internal C_Cpp.FindAllReferences command that issues the existing cpptools/findAllReferences request without joining the workspaceReferences single-flight cancellation path.

Extract the shared request and confirmed-location mapping logic from FindAllReferencesProvider so the existing vscode.executeReferenceProvider flow and the new silent command use the same request translation and cancellation handling for server-side cancel responses.

Keep the interactive provider behavior unchanged: user-invoked references still cancel prior work, reset reference progress state, and update the ReferencesManager UI. The new command resolves the owning client from the target URI and returns locations without progress UI, preview notifications, or references panel updates, enabling concurrent silent callers such as Copilot.
@carsonRadtke carsonRadtke requested a review from a team as a code owner March 16, 2026 18:59
@github-project-automation github-project-automation bot moved this to Pull Request in cpptools Mar 16, 2026
@carsonRadtke carsonRadtke marked this pull request as draft March 16, 2026 19:00
@sean-mcmanus
Copy link
Contributor

sean-mcmanus commented Mar 16, 2026

Should call hierarchy be handled too? I haven't checked yet if the issue repros with that or not, but it might.

UPDATE: Yeah, I tried it out (without this change) and I see Call Hierarchy Callers of cancel Copilot's Find All References. I see the same thing with Rename. Both of those share the same underlying implementation.

Does this change fix those cases too?

I also see #GetSymbolCallHierarchy_CppTools get canceled by a user invoked Find All References/etc..

@carsonRadtke carsonRadtke self-assigned this Mar 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Pull Request

Development

Successfully merging this pull request may close these issues.

2 participants