Skip to content

Commit b893a20

Browse files
committed
1 parent d6e842b commit b893a20

1 file changed

Lines changed: 31 additions & 3 deletions

File tree

src/vs/editor/contrib/gotoError/gotoErrorWidget.ts

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ class MessageWidget {
5252

5353
const domNode = document.createElement('div');
5454
domNode.className = 'descriptioncontainer';
55-
domNode.setAttribute('aria-live', 'assertive');
56-
domNode.setAttribute('role', 'alert');
5755

5856
this._messageBlock = document.createElement('div');
5957
dom.addClass(this._messageBlock, 'message');
58+
this._messageBlock.setAttribute('aria-live', 'assertive');
59+
this._messageBlock.setAttribute('role', 'alert');
6060
domNode.appendChild(this._messageBlock);
6161

6262
this._relatedBlock = document.createElement('div');
@@ -88,7 +88,8 @@ class MessageWidget {
8888
dispose(this._disposables);
8989
}
9090

91-
update({ source, message, relatedInformation, code }: IMarker): void {
91+
update(marker: IMarker): void {
92+
const { source, message, relatedInformation, code } = marker;
9293
let sourceAndCodeLength = (source?.length || 0) + '()'.length;
9394
if (code) {
9495
if (typeof code === 'string') {
@@ -106,6 +107,7 @@ class MessageWidget {
106107
}
107108

108109
dom.clearNode(this._messageBlock);
110+
this._messageBlock.setAttribute('aria-label', this.getAriaLabel(marker));
109111
this._editor.applyFontInfo(this._messageBlock);
110112
let lastLineElement = this._messageBlock;
111113
for (const line of lines) {
@@ -192,6 +194,32 @@ class MessageWidget {
192194
getHeightInLines(): number {
193195
return Math.min(17, this._lines);
194196
}
197+
198+
private getAriaLabel(marker: IMarker): string {
199+
let severityLabel = '';
200+
switch (marker.severity) {
201+
case MarkerSeverity.Error:
202+
severityLabel = nls.localize('Error', "Error");
203+
break;
204+
case MarkerSeverity.Warning:
205+
severityLabel = nls.localize('Warning', "Warning");
206+
break;
207+
case MarkerSeverity.Info:
208+
severityLabel = nls.localize('Info', "Info");
209+
break;
210+
case MarkerSeverity.Hint:
211+
severityLabel = nls.localize('Hint', "Hint");
212+
break;
213+
}
214+
215+
let ariaLabel = nls.localize('marker aria', "{0} at {1}. ", severityLabel, marker.startLineNumber + ':' + marker.startColumn);
216+
const model = this._editor.getModel();
217+
if (model && (marker.startLineNumber <= model.getLineCount()) && (marker.startLineNumber >= 1)) {
218+
const lineContent = model.getLineContent(marker.startLineNumber);
219+
ariaLabel = `${lineContent}, ${ariaLabel}`;
220+
}
221+
return ariaLabel;
222+
}
195223
}
196224

197225
export class MarkerNavigationWidget extends PeekViewWidget {

0 commit comments

Comments
 (0)