Add internal silent find-all-references command#14281
Add internal silent find-all-references command#14281carsonRadtke wants to merge 2 commits intomainfrom
Conversation
|
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.. |
| } else { | ||
| detail = getLocalizedSymbolScope("protected", detail); | ||
| } | ||
| function getChildrenSymbols(symbols: LocalizeDocumentSymbol[]): vscode.DocumentSymbol[] { |
There was a problem hiding this comment.
@carsonRadtke I thought C/C++ DevTools only used workspace symbols and not document symbols? Why is document symbols changing instead of workspace symbols?
There was a problem hiding this comment.
I see DevTools issue workspace symbol requests and not document symbol requests.
There was a problem hiding this comment.
I have found potential document symbol requests, but it doesn't seem like they can be cancelled by an additional user/DevTools invoked request?
There was a problem hiding this comment.
i.e. I think the token cancellation for a request only applies to that particular request and it doesn't affect other requests (only the FAR-related requests cancel previous requests when new ones are requested)...unless I'm misunderstanding something.
a055128 to
1cbc9c5
Compare
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.
Align cpptools with the companion changes that now prefer internal C_Cpp.* navigation commands over the generic vscode.* provider commands when running extension-driven symbol queries. Add C_Cpp.GoToDefinition, C_Cpp.PrepareCallHierarchy, C_Cpp.CallHierarchyCallsTo, and C_Cpp.CallHierarchyCallsFrom as internal commands that resolve the owning DefaultClient from the target URI and send requests directly to cpptools without joining the workspaceReferences UI and single-flight cancellation path. Extract shared call hierarchy request and conversion logic from CallHierarchyProvider so the existing interactive provider flow and the new silent commands share the same request translation and server-cancellation handling. Add a dedicated go-to-definition helper that sends the standard definition request through the language client and normalizes both Location and DefinitionLink responses to Location[] so companion callers can consume a stable result shape. Keep interactive behavior unchanged: user-invoked providers continue to use the existing VS Code registrations, progress handling, and workspaceReferences-driven cancellation semantics, while extension callers such as the devtools companion can use the new internal command surface without canceling overlapping work.
1cbc9c5 to
dd5a028
Compare
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.