Skip to content

Commit ab705a2

Browse files
authored
Diff Editor Helper Refactoring (microsoft#188198)
1 parent c0da4d4 commit ab705a2

File tree

1 file changed

+40
-36
lines changed

1 file changed

+40
-36
lines changed

src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.ts

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -44,42 +44,7 @@ class DiffEditorHelperContribution extends Disposable implements IDiffEditorCont
4444
) {
4545
super();
4646

47-
this._register(AccessibilityHelpAction.addImplementation(105, 'diff-editor', async accessor => {
48-
const accessibleViewService = accessor.get(IAccessibleViewService);
49-
const editorService = accessor.get(IEditorService);
50-
const codeEditorService = accessor.get(ICodeEditorService);
51-
const keybindingService = accessor.get(IKeybindingService);
52-
53-
const next = keybindingService.lookupKeybinding(DiffReviewNext.id)?.getAriaLabel();
54-
const previous = keybindingService.lookupKeybinding(DiffReviewPrev.id)?.getAriaLabel();
55-
56-
if (!(editorService.activeTextEditorControl instanceof DiffEditorWidget2)) {
57-
return;
58-
}
59-
60-
const codeEditor = codeEditorService.getActiveCodeEditor() || codeEditorService.getFocusedCodeEditor();
61-
if (!codeEditor) {
62-
return;
63-
}
64-
65-
const keys = ['audioCues.diffLineDeleted', 'audioCues.diffLineInserted', 'audioCues.diffLineModified'];
66-
67-
accessibleViewService.show({
68-
verbositySettingKey: 'diffEditor',
69-
provideContent: () => [
70-
nls.localize('msg1', "You are in a diff editor."),
71-
nls.localize('msg2', "Press {0} or {1} to view the next or previous diff in the diff review mode that is optimized for screen readers.", next, previous),
72-
nls.localize('msg3', "To control which audio cues should be played, the following settings can be configured: {0}.", keys.join(', ')),
73-
].join('\n'),
74-
onClose: () => {
75-
codeEditor.focus();
76-
},
77-
options: { type: AccessibleViewType.HelpMenu, ariaLabel: nls.localize('chat-help-label', "Diff editor accessibility help") }
78-
});
79-
}, ContextKeyExpr.and(
80-
ContextKeyEqualsExpr.create('diffEditorVersion', 2),
81-
ContextKeyEqualsExpr.create('isInDiffEditor', true),
82-
)));
47+
this._register(createScreenReaderHelp());
8348

8449
this._helperWidget = null;
8550
this._helperWidgetListener = null;
@@ -151,4 +116,43 @@ class DiffEditorHelperContribution extends Disposable implements IDiffEditorCont
151116
}
152117
}
153118

119+
function createScreenReaderHelp(): IDisposable {
120+
return AccessibilityHelpAction.addImplementation(105, 'diff-editor', async (accessor) => {
121+
const accessibleViewService = accessor.get(IAccessibleViewService);
122+
const editorService = accessor.get(IEditorService);
123+
const codeEditorService = accessor.get(ICodeEditorService);
124+
const keybindingService = accessor.get(IKeybindingService);
125+
126+
const next = keybindingService.lookupKeybinding(DiffReviewNext.id)?.getAriaLabel();
127+
const previous = keybindingService.lookupKeybinding(DiffReviewPrev.id)?.getAriaLabel();
128+
129+
if (!(editorService.activeTextEditorControl instanceof DiffEditorWidget2)) {
130+
return;
131+
}
132+
133+
const codeEditor = codeEditorService.getActiveCodeEditor() || codeEditorService.getFocusedCodeEditor();
134+
if (!codeEditor) {
135+
return;
136+
}
137+
138+
const keys = ['audioCues.diffLineDeleted', 'audioCues.diffLineInserted', 'audioCues.diffLineModified'];
139+
140+
accessibleViewService.show({
141+
verbositySettingKey: 'diffEditor',
142+
provideContent: () => [
143+
nls.localize('msg1', "You are in a diff editor."),
144+
nls.localize('msg2', "Press {0} or {1} to view the next or previous diff in the diff review mode that is optimized for screen readers.", next, previous),
145+
nls.localize('msg3', "To control which audio cues should be played, the following settings can be configured: {0}.", keys.join(', ')),
146+
].join('\n'),
147+
onClose: () => {
148+
codeEditor.focus();
149+
},
150+
options: { type: AccessibleViewType.HelpMenu, ariaLabel: nls.localize('chat-help-label', "Diff editor accessibility help") }
151+
});
152+
}, ContextKeyExpr.and(
153+
ContextKeyEqualsExpr.create('diffEditorVersion', 2),
154+
ContextKeyEqualsExpr.create('isInDiffEditor', true)
155+
));
156+
}
157+
154158
registerDiffEditorContribution(DiffEditorHelperContribution.ID, DiffEditorHelperContribution);

0 commit comments

Comments
 (0)