* fix: signature help active overload not updating
- Active overload now updates when typed arguments narrow the overload set
* fix: replace findIndex with direct index lookup in getActiveSignature
- Instead of searching signatures by label to get an index and comparing
it to info.selectedItemIndex, look up signatures[info.selectedItemIndex]
directly so both sides of the comparison use the same index source
* test: add unit tests for #268728 overload fix
- Extract getActiveSignature as an exported function so unit
tests can import it without the extension host
- Add BEFORE suite documenting the original bug: on retrigger,
old code returned the stale overload index even after
TypeScript updated selectedItemIndex (e.g. after a string
argument narrows the overload set on the comma trigger)
- Add AFTER suite verifying the fix: retrigger now honours
TypeScript's updated selectedItemIndex; the BUG test case
that returned 0 now correctly returns 1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: address Copilot review on #268728
- Rename exported helper to computeActiveSignatureIndex to
avoid identifier collision with the private method
- Stop returning activeSignatureHelp.activeSignature: that
index refers to the previous signature list, which is stale
if the list reorders between invocations; always use
tsSelectedItemIndex instead
- Add regression test for the reordering case: verifies that
when the list reorders and TS still selects the same overload
by label, the current index is returned, not the stale one
* fix: address Copilot review on #268728
- Simplify computeActiveSignatureIndex to only accept
tsSelectedItemIndex; the context and signatures params
were unused and made the API misleading
- Add @internal JSDoc to signal the
computeActiveSignatureIndex export is for unit
testing only, not public API
- Replace assertion-based BEFORE suite with block comment
documenting the original bug; asserting known-wrong
behaviour institutionalizes incorrect expectations
* fix: simplify active overload selection
- Replace the label-matching retrigger guard with result.activeSignature = info.selectedItemIndex;
the guard became a no-op after the existingIndex === selectedItemIndex fix and its removal is the correct minimal change
- Export TypeScriptSignatureHelpProvider as _TypeScriptSignatureHelpProvider
(VS Code underscore-prefix convention for test-only exports)
- Add unit tests via mock ITypeScriptServiceClient: documents the old buggy guard behavior
and verifies the fix — the FIX test would fail if the label-matching guard were reintroduced
* fix: address Copilot unit test review comments
- Move CancellationTokenSource into setup/teardown so it is properly disposed after each test
- Add success: true and message: '' to mock response to match the protocol shape
- Add @internal test-only export JSDoc to _TypeScriptSignatureHelpProvider to make the export intent explicit
* Fix signature help overload selection
Track TypeScript-selected and user-selected overloads separately so retriggers follow updated recommendations without resetting manual selections.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
typescript: suppress Copilot Chat plugin crash notification
Do not show the JS/TS language service crash notification when Copilot Chat is the only contributing TypeScript server plugin. Continue reporting other plugins and preserve the existing no-plugin notification.\n\n(Written by Copilot)\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When ensureConfigurationForDocument is called and no visible text editor
is found for the document, getFormattingOptions returns undefined and
the method returns early without sending any configuration including
user preferences like preferTypeOnlyAutoImports to the TS server.
This causes source.addMissingImports to ignore the user's
preferTypeOnlyAutoImports setting.
Fix by falling back to undefined formatting options when no visible
editor is found, ensuring user preferences are always sent.
Closes#272479
For #292934
Also renames some of the server settings to have a more consistent naming scheme. This is going to be annoying but is the best time to do this since we are already changing the full setting id