Change:
const range = match.range(); const matchText = match.text().substr(0, range.endColumn + 150); if (replace) { <del> return nls.localize('replacePreviewResultAria', "Replace '{0}' with '{1}' in line '{2}' at column {3}", matchString, match.replaceString, matchText, range.startColumn + 1); </del> <ins> return nls.localize('replacePreviewResultAria', "'{0}' at column {1} replace {2} with {3}", matchText, range.startColumn + 1, matchString, match.replaceString); </ins> } <del> return nls.localize('searchResultAria', "Found '{0}' in line '{1}' at column {2}", matchString, matchText, range.startColumn + 1); </del> <ins> return nls.localize('searchResultAria', "'{0}' at column {1} found {2}", matchText, range.startColumn + 1, matchString); </ins> } return null; }

Discussion:
reported by the aria label for search results should read content first then location IE line/column info ! cc for historical context
Makes good sense, and should be an easy fix.
Interesting - this works as expected on macOS
When replace is disabled, we have a label that looks like Otherwise, if replace is enabled, we have: Would you rather see something like for non-replace and for replace? Not too sure why this would be different on mac. What does the aria say on your machine?
Thanks for looking into this. I have not tried on Windows, but when shared his screen (on Windows), the announcement read the line/column info before the actual content. Do you know where that would be coming from?
should be fixed in
I just tried on Windows and cannot reproduce the behavior that demoed - in which the line/col info was presented before the actual content. We will need to hear from him if it still happens and if so, how to reproduce.
Did you just try on insiders? I just changed the functionality
and Note: is redundant b/c that's the user input search term and users already know what they are looking for, and it takes longer time for screen reader users to hear the actual content.
thanks for clarifying. Re The reason for was to distinguish between that and a . Do you think that we should keep the part of or get rid of both given they require the user's action to get into that state? Another option would be to append to the end of the message.
The reason that we state the match again is for regex users. If they have a fairly general regex, they might want to know what actually caused it to match. Although we could also argue that the line context is more commonly valued by search users, since many people don't use regex.
Thanks for that context I agree that we should optimize for the most common case here.
-- I recommend taking out redundant prefix, including 'Replace'. This is similar to one of the recommended best practices creating alt text. We recommend avoiding any redundant words, such as "Image of " or "Graphics of " b/c users know what they are interacting with.
Using the example from before, we could probably do something like 'VSCode is cool' found in match 'VSCode' in line at column 15 when replace is not active. What do you think the replace case should look like?

The user will know if they're triggering a or , so the idea is to remove both of those terms. So, for search: for replace:
Since the replace hasn't occurred at this point yet, wouldn't be past tense in the results. We can say, instead, but is that too wordy? Also, I feel that the match string is still useful here for those who search for regex, so perhaps that could go at the end? Or we could just read it if they have regex search enabled.
fyi, 'm going to move this to that may iteration because I will be offline for the rest of the April iteration.
I might fix it for you
It sounds like line number is still expected from the comments here, but only the column number is stated. e.g. 'matched context' at column 34 found (1) 1 of 1 Also, finding a match in the first column will state that it was found at column 2
I see why you were confused but is text not a line number there. So this is working as designed.
not sure what you mean by this
created since it seems like a different issue