Change:
Environment Details: VSCode Version : 1.24.0 OS Version : Win10 Mac OS Version:HighSierra10.13.5 Additional Details: MAS Violated: MAS1.3.1 ScreenReader Version: NVDA2018.2 Repro Steps: VS Code while NVDA/VoiceOver is ON. to View menu and Select Integrated Terminal. till Add Terminal button(+) or delete terminal and press enter Actual: NVDA does not announce any information when a new terminal gets or deleted. When a new terminal opens, it also gets to combobox and same happens when we delete any terminal. Issue also found with VoiceOver. Expected: NVDA should announce some information when any new terminal gets or deleted and also the current terminal where user is working. Recommendations: Refer below link which is repository of bug fixes code snippets: User Impact: User will not get the proper information about new terminals. MAS Reference {-a2d1-4dcd-84e1-} Attachment for Reference: Does this issue occur when all extensions are disabled?: Yes
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.589 --- <!-- score: 0.573 --- <!-- score: 0.523 --- <!-- score: 0.517 --- <!-- score: 0.486 --<!-- potentialduplicates_comment --
This feel like the terminal service could simply do whenever a new terminal is opened. Similar to how we do in debug lang. Feels like low hanging fruit, assigning to july
It doesn't look like this is as simple as adding whenever a terminal is opened or closed. The alert gets interrupted by whatever has focus next. On terminal start, this is the text in the terminal. On terminal stop this is whatever document is open or the main canvas.
what is the ideal behavior given the number of announcements that can follow? Would it be best to say "Terminal created, terminal focused, c colon backslash blah blah"?
The answer to this is that we don't need to announce or deleted terminals but rather announce the focused terminal only. If the active terminal dies we don't need to announce it, just announce the other terminal or editor that's focused afterwards.
do you have enough info to do this for October?
the current behavior is that the screen reader starts reading the contents of the next item to be focused. Instead, if the terminal has focus and then dies we should announce what gained focus and not the contents of the thing that gained focus?
example scenario as I understand it: +focus terminal, "Terminal 1, ~/dev " terminal, "somefile, blah" (whatever the editor announces) +focus terminal, "Terminal 1" (~/dev was already covered in 1) terminal, "somefile, blah" (whatever the editor announces)
I see. So the change here is to announce "Terminal <number" every time the terminal gains focus. The cwd is already read after the terminal is focused, though not immediately.
what about when the terminal is split? Just announce the terminal number again?
yes, yes

Discussion:
*  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <ins> import * as aria from 'vs/base/browser/ui/aria/aria'; import * as nls from 'vs/nls'; </ins> import { ITerminalInstance, IShellLaunchConfig, ITerminalTab, Direction, ITerminalService, ITerminalConfigHelper } from 'vs/workbench/parts/terminal/common/terminal'; import { IContextKey } from 'vs/platform/contextkey/common/contextkey'; import { Event, Emitter, anyEvent } from 'vs/base/common/event';

private _initInstanceListeners(instance: ITerminalInstance): void { instance.addDisposable(instance.onDisposed(instance => this._onInstanceDisposed(instance))); <del> instance.addDisposable(instance.onFocused(instance => this._setActiveInstance(instance))); </del> <ins> instance.addDisposable(instance.onFocused(instance => { aria.alert(nls.localize('terminalFocus', "Terminal {0}", this._terminalService.activeTabIndex + 1)); this._setActiveInstance(instance); })); </ins> } private _onInstanceDisposed(instance: ITerminalInstance): void {