jiebi/CodeConvo huggingface dataset:
Code change:
let mut addr = url::Url::parse("https://insiders.vscode.dev").unwrap(); { let mut ps = addr.path_segments_mut().unwrap(); <del> ps.push(extension_name); </del> <ins> ps.push("tunnel"); </ins> ps.push(tunnel_name); for segment in &dir { let as_str = segment.to_string_lossy();

Related discussion:
text: Testing After enabling remote tunnel access, a link like this is printed: The browser ends up redirecting to It would be nicer to genrate the vanity format
Code change:
return super.saveTextEditorViewState(arg1); } <del> if (arg1 instanceof UntitledEditorInput && !arg1.isDisposed()) { </del> <ins> if ((arg1 instanceof UntitledEditorInput || arg1 instanceof ResourceEditorInput) && !arg1.isDisposed()) { </ins> return super.saveTextEditorViewState(arg1.getResource().toString()); } }

Related discussion:
text: Start legacy protocol debug session Open something via "Open loaded scripts" scroll down ctrl+tab to switch to another doc ctrl+tab back to the newly opened script It's scrolled up to the top. Is it being closed/opened each time we switch away?
This problem is independent from the "Open Loaded Scripts" feature. To reproduce: debug a simple node hello world program and stop on entry in the CALL STACK select an internal module press Control-Tab twice (to switch between two editors) Observe: you loose the scroll position in the internal module
March to investigate
Workbench is not preserving scroll location of in memory resources. Same is true for diff view. Forwarding to since he probably already has an issue for this
I do but I cannot find it right now, PR welcome.
give me some code pointers for the PR and I can do it in debt week
we do it for and via the and methods that are actually defined in and we could probably push this down from and and just use it from textEditor for any input that has a resource
Ok, makes sense. Assigning to me and April to look into it
Related:
With landed, we keep the UI state when you switch editors, though we clear it when you close a tab. The rationale is that the lifecycle of these editors that have virtual resources is not known, as such we assume the view state can be ditched once the editor closes.
That sounds perfect!
Code change:
} const firstPageElement = this.view.element(firstPageIndex); <del> const currentlyFocusedElement = this.getFocusedElements()[0]; </del> <ins> const currentlyFocusedElementIndex = this.getFocus()[0]; const currentlyFocusedElement = this.view.element(currentlyFocusedElementIndex); </ins> <del> if (currentlyFocusedElement !== firstPageElement) { </del> <ins> if (currentlyFocusedElement !== firstPageElement && currentlyFocusedElementIndex >= firstPageIndex) { </ins> const firstGoodPageIndex = this.findNextIndex(firstPageIndex, false, filter); if (firstGoodPageIndex > -1 && currentlyFocusedElement !== this.view.element(firstGoodPageIndex)) {

Related discussion:
text: Open Select the top cell and page down a few times Focus hits a cell that is longer than the viewport, which is maybe important, then the next page down moves to a higher cell
When a list item is larger than the viewport, and it's also the only element in the viewport, pressing page down will reveal to the previous element, this is because we did a here (the catch is, the last page element is also the first page element)
Code change:
this._register(this.instantiationService.createInstance(NotebookEditorContextKeys, this)); <del> this._notebookOutline = this.instantiationService.createInstance(NotebookCellOutlineProvider, this, OutlineTarget.QuickPick); </del> <ins> this._notebookOutline = this._register(this.instantiationService.createInstance(NotebookCellOutlineProvider, this, OutlineTarget.QuickPick)); </ins> this._register(notebookKernelService.onDidChangeSelectedNotebooks(e => { if (isEqual(e.notebook, this.viewModel?.uri)) {

Related discussion:
text: only seen in OSS so far outline view shows 'No symbols found in document '*.ipynb' or a very limited amount of the outline logs show an exception:
Code change:
path: 'tmux' } }, <ins> additionalProperties: terminalProfileSchema </ins> }, 'terminal.integrated.profiles.linux': { markdownDescription: localize(

Related discussion:
text: Testing I'm wondering if there's a way to add a schema so that users can get descriptions on the various fields they can use while creating a new profile. I also realize that the keys represent profile names, so that might make it harder to validate/provide descriptions for them. I guess the description for the keys would go under in that case, though there already is a long description for that field.
this would be nice, looked into it a bit but we're not sure how to set it up for such an object. We essentially want to enforce something like
would you be the right person to ask about schemas for settings?
You can use the property to specify the shape of all properties regardless of the key. An example is the setting: If there are constraints on the key, you can use :
Code change:
// Based on testing, the trigger character is always at the end of the query. // for the ':' trigger, only return suggestions if there was a '@' before it in the same word. const queryParts = query.split(/s/g); <del> if (queryParts[queryParts.length - 1].startsWith('@')) { </del> <ins> if (queryParts[queryParts.length - 1].startsWith(`@${LANGUAGE_SETTING_TAG}`)) { return this.languageService.getRegisteredLanguageIds().map(languageId => { return `@${LANGUAGE_SETTING_TAG}${languageId} `; }).sort(); } else if (queryParts[queryParts.length - 1].startsWith('@')) { </ins> return SettingsEditor2.SUGGESTIONS.filter(tag => !query.includes(tag)).map(tag => tag.endsWith(':') ? tag : tag + ' '); } return [];

Related discussion:
text: Testing Type in the settings editor. It would be nice if there was autocomplete for a list of languages. This is a finite list which we should be able to suggest fyi !
It's easier to discover language overrides in the editor because there is autocomplete there: !
Thanks to for pointing out the language service to me the other day. PR ready above.
/verified? The autocomplete works but no matter what I write there I get the same set of settings? I suppose all of these apply to all languages. ! !
Yep, the idea is for it to show all language-configurable settings. Then, the user can read and write settings for that language. I plan on making it so that the tab says which language you're on, for extra confirmation.
Code change:
for (( i=0; i < "${#str}"; ++i )); do byte="${str:$i:1}" <del> # Escape backslashes, semi-colons specially, then special ASCII chars below space (0x20) </del> <ins> # Escape backslashes, semi-colons specially, then special ASCII chars below space (0x20). # This is done in an unwrapped loop instead of using printf as the latter is very slow. </ins> if [ "$byte" = "" ]; then token="" elif [ "$byte" = ";" ]; then token="x3b" <del> elif (( $(builtin printf '%d' "'$byte") < 31 )); then token=$(builtin printf 'x%02x' "'$byte") </del> <ins> elif [ "$byte" = $'x00' ]; then token="x00" elif [ "$byte" = $'x01' ]; then token="x01" elif [ "$byte" = $'x02' ]; then token="x02" elif [ "$byte" = $'x03' ]; then token="x03" elif [ "$byte" = $'x04' ]; then token="x04" elif [ "$byte" = $'x05' ]; then token="x05" elif [ "$byte" = $'x06' ]; then token="x06" elif [ "$byte" = $'x07' ]; then token="x07" elif [ "$byte" = $'x08' ]; then token="x08" elif [ "$byte" = $'x09' ]; then token="x09" elif [ "$byte" = $'x0a' ]; then token="x0a" elif [ "$byte" = $'x0b' ]; then token="x0b" elif [ "$byte" = $'x0c' ]; then token="x0c" elif [ "$byte" = $'x0d' ]; then token="x0d" elif [ "$byte" = $'x0e' ]; then token="x0e" elif [ "$byte" = $'x0f' ]; then token="x0f" elif [ "$byte" = $'x10' ]; then token="x10" elif [ "$byte" = $'x11' ]; then token="x11" elif [ "$byte" = $'x12' ]; then token="x12" elif [ "$byte" = $'x13' ]; then token="x13" elif [ "$byte" = $'x14' ]; then token="x14" elif [ "$byte" = $'x15' ]; then token="x15" elif [ "$byte" = $'x16' ]; then token="x16" elif [ "$byte" = $'x17' ]; then token="x17" elif [ "$byte" = $'x18' ]; then token="x18" elif [ "$byte" = $'x19' ]; then token="x19" elif [ "$byte" = $'x1a' ]; then token="x1a" elif [ "$byte" = $'x1b' ]; then token="x1b" elif [ "$byte" = $'x1c' ]; then token="x1c" elif [ "$byte" = $'x1d' ]; then token="x1d" elif [ "$byte" = $'x1e' ]; then token="x1e" elif [ "$byte" = $'x1f' ]; then token="x1f" </ins> else token="$byte" fi

Related discussion:
text: I just updated to this version: Version: 1.90.1 (user setup) Commit: Date: 2024-06-11T21:01:24.262Z Electron: 29.4.0 ElectronBuildId: Chromium: 122.0.6261.156 20.9.0 V8: 12.2.281.27-electron.0 OS: Windows_NT x64 10.0.
it should be fixed yes, can you run and paste in the results?
$ for i in {1..10}; do time _vscreport_prompt; done real 0m0.236s user 0m0.045s sys 0m0.092s real 0m0.194s user 0m0.045s sys 0m0.076s real 0m0.210s user 0m0.030s sys 0m0.122s real 0m0.217s user 0m0.015s sys 0m0.152s real 0m0.216s user 0m0.061s sys 0m0.138s real 0m0.245s user 0m0.045s sys 0m0.123s real 0m0.202s user 0m0.015s sys 0m0.091s real 0m0.212s user 0m0.061s sys 0m0.091s real 0m0.230s user 0m0.000s sys 0m0.153s real 0m0.212s user 0m0.045s sys 0m0.108s
It seems like it's taking a long time to parse the prompt. My git bash prompt is user MINGW64 /c/path/to/dir (master), where the my /c/path/to/dir is a 29 character path. But sometimes it's a lot longer. Does a longer path make it slower?
Code change:
this.update(); } <del> get valueSelection() { const selection = this.ui.inputBox.getSelection(); if (!selection) { return undefined; } return [selection.start, selection.end]; } set valueSelection(valueSelection: Readonly<[number, number]> | undefined) { </del> <ins> set valueSelection(valueSelection: Readonly<[number, number]>) { </ins> this._valueSelection = valueSelection; this.valueSelectionUpdated = true; this.update();

Related discussion:
text: open normal quick pick () type notice you want symbol search and select the cursor is random, within the word, and doesn't select the previous input anymore
Code change:
@IInstantiationService instantiationService: IInstantiationService, @IWorkspaceContextService private contextService: IWorkspaceContextService, @IStorageService storageService: IStorageService, <del> @IHistoryService private historyService: IHistoryService, </del> @ITextResourceConfigurationService configurationService: ITextResourceConfigurationService, @IWorkbenchEditorService private editorService: IWorkbenchEditorService, @IThemeService themeService: IThemeService,

Related discussion:
text: Steps to Reproduce: The cursor should go back to the exact spot where it was before the jump. Instead, it goes one sport further back...
Can you provide more details like VS Code version, OS type and version etc. Also, sample code of what you are trying to do in your extension and a screencast/gif/video ?
Likely
There is no extension involved. This is vanilla behaviour. Using version 1.4 on Ubuntu 16.04. Related to , but not the same. This is likely to be very easy to fix (jumpToDefinition event should push the current cursor position to the history).
I agree we should record the current cursor position on certain actions like "Go to definition".
Pushed a change to improve this situation for the following cases: goto definition will store the current cursor location as history entry so that when jumping back you end up in the same line number opening another editor will now also store the current cursor in the history so that going back puts you to the exact same line number too
Code change:
private _sortByLabel = true; private _autoFocusOnList = true; private _keepScrollPosition = false; <del> private _itemActivation = this.ui.isScreenReaderOptimized() ? ItemActivation.NONE /* https://github.com/microsoft/vscode/issues/57501 */ : ItemActivation.FIRST; </del> <ins> private _itemActivation = ItemActivation.FIRST; </ins> private _activeItems: T[] = []; private activeItemsUpdated = false; private activeItemsToConfirm: T[] | null = [];

Related discussion:
text: <!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Hello, we have been recently testing out our extension for accessibility bugs, and we believe we may have found one directly linked to vscode. The extension we are using is Bridge to Kubernetes. Does this issue occur when all extensions are disabled?: Yes VS Code Version: Visual Studio Code Version 1.73.1. (user setup) OS Version: Windows 11 Version 21H2 (OS Build .376) Steps to Reproduce: on NVDA/JAWS. Visual studio code application and setup Bridge to Kubernetes extension. cluster config file and load 'stats-apo' project. 'Ctrl+Shift+P' open command palette in View menu. 'Bridge to Kubernetes: Configure' and press enter. using down arrow key to select 'stats-api' in connect to kubernetes (1/4) stage and press enter. '3001' in connect to kubernetes service: stats-api (2/4) stage and press enter. whether NVDA/JAWS is announcing the given placeholder text at edit field or not.
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.73.1. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Hi The bug still exists with the new vscode version. I edited the original post. Thanks!
I think you just worked on improving the accessibility of the quick pick - thoughts on this?
A11yMAS; #A11yTCS; #A11ySev2; #DesktopApp; #Win32; #Visual Studio Code Client; #BM-VisualStudioCodeClient-Win32-Aug2022; #WCAG1.3.1; #Element:Placeholdertext; #AILimited; #JAWS; #NVDA;
have you looked into the feasibility of supporting this?
Sorry I'm not sure I totally follow here.
Code change:
private _sortByLabel = true; private _autoFocusOnList = true; private _keepScrollPosition = false; <del> private _itemActivation = this.ui.isScreenReaderOptimized() ? ItemActivation.NONE /* https://github.com/microsoft/vscode/issues/57501 */ : ItemActivation.FIRST; </del> <ins> private _itemActivation = ItemActivation.FIRST; </ins> private _activeItems: T[] = []; private activeItemsUpdated = false; private activeItemsToConfirm: T[] | null = [];

Related discussion:
text: Just to make sure, can you attach a gif? /gifPlease
Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, files are preferred as they are displayed inline on GitHub. You may find helpful as a browser-based gif recording tool. If the issue depends on keyboard input, you can help us by enabling screencast mode for the recording ( in the command palette). Lastly, please attach this file via the GitHub web interface as emailed responses will strip files out from the issue. Happy coding!
from the above description, I believe what expects is for the placeholder text to be read before the selected item is. From my testing though, that is working already (I tried and
Thanks for the comments and I will try and get a gif for you folks in the upcoming days!
sadly gif does not record audio. I will record a video and send it to you internally.
video uploads on GitHub issues work now so you can always attach here :)
I have attached a video below! Basically, the place holder text should be read with NVDA. The accessibility folks have flagged this as a bug. Thanks! https://user-
do you have Accessibility mode turned on? Just checking. You should have gotten a notification about it.
you can turn that on with
Let me test that today thanks!
where do I find ?
and search for . The alternative way would be to run the command via the command palette
Thanks for this it was set to auto. I will turn it to on and try again
It is still not pronouncing the text in the edit field. Would you classify this as a bug or is this just a part of VsCode?
I can reproduce the issue - I'd expect the placeholder text to be read before the selected item is, but that does not happen.
Example: In a multi root workspace, run . I'd expect it to read to me: "Select current working directory for the new terminal"
Logging shows that the quick input's aria label is correctly set. After that though, when an item is selected by default, its aria label takes precedence
Perhaps when is true, we could not select an item by default so that the placeholder text will have focus every time?
Code change:
private _sortByLabel = true; private _autoFocusOnList = true; private _keepScrollPosition = false; <del> private _itemActivation = this.ui.isScreenReaderOptimized() ? ItemActivation.NONE /* https://github.com/microsoft/vscode/issues/57501 */ : ItemActivation.FIRST; </del> <ins> private _itemActivation = ItemActivation.FIRST; </ins> private _activeItems: T[] = []; private activeItemsUpdated = false; private activeItemsToConfirm: T[] | null = [];

Related discussion:
text: thought that was the behavior today? Just opened the Command Palette... focus is in the input: <img width="830" alt="image" src="https://user-"
I mean when you run a command that opens a quick pick such as !
commenting out this code fixes it
so I think we need to check there if and not focus
Looks like this use to be reported in
! odd I don't repro with that command you have... wonder if we have a conflicting setting. Also VoiceOver did read out the placeholder in this case.
for me, the placeholder is not read in most cases (but it is with the changes in the PR)
my repro steps were when in a multi root repo, run that command. the first quick pick placeholder isn't read
Hi and I see this as moved to the backlog. Do we have a rough date in which this could possibly be looked at again? I plan on telling the testers that you two are looking at the bug. Thanks!
I did it in "holiday mode" as a lot of us are disappearing for the holidays. I'll leave it on January
Thanks for the update that totally makes sense. I will let the testers know. Happy holidays!
do you see a way to do this? it's not clear to me where the item is getting focused
is open to testing the PR once it is available
We'll try to fix this in February with the following read by the screen reader via : placeholder of input box (note this doesn’t logically have to be the placeholder, it could be an aria label set somewhere) number of items in the list the label of the highlighted item in the list (aka the first item in the list)
I just discussed with and he says "I need an ARIA expert because I can’t get this to work nicely. is what we use today on the quick pick input box. That points to the focused item in the list. This is needed because true focus always stays in the input box. The problem is that if an element has AND the is ignored. I’ve tried a few other solutions and haven’t had luck, unfortunately. Looking for creative solutions" might you have suggestions here?
Code change:
private _sortByLabel = true; private _autoFocusOnList = true; private _keepScrollPosition = false; <del> private _itemActivation = this.ui.isScreenReaderOptimized() ? ItemActivation.NONE /* https://github.com/microsoft/vscode/issues/57501 */ : ItemActivation.FIRST; </del> <ins> private _itemActivation = ItemActivation.FIRST; </ins> private _activeItems: T[] = []; private activeItemsUpdated = false; private activeItemsToConfirm: T[] | null = [];

Related discussion:
text: Just to provide an update... After chewing on the problem yesterday, my best idea is to try to mirror this design pattern as much as possible: Applying it to the quick pick means making the following changes: in a11y mode, we do not focus any of the items in the list. Doing this, we can easily ensure that the placeholder is read out because aria-activedecentant won’t be set yet in a11y mode, When the user types something in the input box, aria-activedecendent is removed and we remove the "active" state of the elements (thus focus goes back to the input) When pressing down the first element is highlighted. aria-activedecendent is set on the inputbox pointing to that item. The item gets read out. Nothing new here. While this pattern is fine, it's not really what I want because the QuickPick isn't really a combo box (though I'll admit it's close). I’m sad because I would rather not have specific a11y mode behavior here… but this is the best I think we can offer with my ARIA skills. Tl;dr: I need a solution for reading the placeholder of the quickpick input box first and then read out the first highlighted item in the list (the aria-activedecendent)
Hi team. I’m reading the thread and I’m probably missing something but I’m concerned that there is perhaps a misunderstanding about how the quick input experience works in general and the particular issue of the Bridge to Kubernetes extension. Perhaps I’m missing the problem, but the quick input list works well for me. Here is an example: the command palette by pressing CTRL +Shift +P a. NVDA announces the label and placeholder text for the editable field as follows: “Type the name of a command to run. combo box has auto complete editable Press 'Enter' to confirm your input or 'Escape' to cancel”. type git, for example, and select the Git clone command with the arrow keys and Enter. a. Upon selecting the command, focus returns to the editable section and NVDA reads the prompt as follows: “Provide repository URL or pick a repository source. combo box has auto complete editable Press 'Enter' to confirm your input or 'Escape' to cancel Provide repository URL or pick a repository source. blank”.
Code change:
private _sortByLabel = true; private _autoFocusOnList = true; private _keepScrollPosition = false; <del> private _itemActivation = this.ui.isScreenReaderOptimized() ? ItemActivation.NONE /* https://github.com/microsoft/vscode/issues/57501 */ : ItemActivation.FIRST; </del> <ins> private _itemActivation = ItemActivation.FIRST; </ins> private _activeItems: T[] = []; private activeItemsUpdated = false; private activeItemsToConfirm: T[] | null = [];

Related discussion:
text: use the arrow keys to select the option to clone from remote sources and press enter on it. a. Upon pressing Enter, focus returns again to the editable field and the prompt is read again: “Repository name (type to search) combo box has auto complete editable Press 'Enter' to confirm your input or 'Escape' to cancel Repository name (type to search) blank”. I wouldn’t expect this to behave any different. The only instance where I have observed a different behavior is with the Bridge to Kubernetes extension where, upon selecting the connect command, for example, screen reader focus seems to jump directly to the list instead of the editable portion which is the standard behavior, maybe because aria-activedescendant is set at a time when it shouldn't? why you would like the placeholder text and the first highlighted item to be read together? I understand the placeholder text as the label for the editable field, therefore it is relevant only when the editable field is focused. By focused in this context I mean that it has screen reader focus, not keyboard focus. When we manipulate aria-activedescendant we are communicating the screen reader to focus on a different control, therefore the label of the control with focus shouldn't be read. The label of the list portion is "Quick Input list", and that is actually the hint that we are now exploring the list of options. I fully agree that we should stay away from an A11Y exclusive mode as much as possible.
because this is the behavior of a sighted users today. They are able to see the placeholder in the input box and the first item in the list is already focused (using ). This allows a user to be shown the quick pick and be able to hit to accept the first item in the list. Putting the "quick" in "quick pick". Today, users of a11y mode via the setting have a different experience, which is what you describe... no item is initially focused and a user in a11y mode must hit down arrow to get to the first item in the list.