mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
use editor options
This commit is contained in:
@@ -513,6 +513,10 @@
|
||||
{
|
||||
"name": "vs/workbench/services/localization",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/accessibility",
|
||||
"project": "vscode-workbench"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -286,6 +286,7 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE
|
||||
renderOverviewRuler: true,
|
||||
diffWordWrap: 'inherit',
|
||||
diffAlgorithm: 'advanced',
|
||||
accessibilityVerbose: true
|
||||
});
|
||||
|
||||
if (typeof options.isInEmbeddedEditor !== 'undefined') {
|
||||
@@ -1274,7 +1275,7 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE
|
||||
if (options.originalAriaLabel) {
|
||||
result.ariaLabel = options.originalAriaLabel;
|
||||
}
|
||||
result.ariaLabel += ariaNavigationTip;
|
||||
this._updateAriaLabel(result);
|
||||
result.readOnly = !this._options.originalEditable;
|
||||
result.dropIntoEditor = { enabled: !result.readOnly };
|
||||
result.extraEditorClassName = 'original-in-monaco-diff-editor';
|
||||
@@ -1287,12 +1288,22 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE
|
||||
};
|
||||
}
|
||||
|
||||
private _updateAriaLabel(options: IEditorConstructionOptions): void {
|
||||
let ariaLabel = options.ariaLabel;
|
||||
if (this._options.accessibilityVerbose) {
|
||||
ariaLabel += ariaNavigationTip;
|
||||
} else if (ariaLabel) {
|
||||
ariaLabel = ariaLabel.replaceAll(ariaNavigationTip, '');
|
||||
}
|
||||
options.ariaLabel = ariaLabel;
|
||||
}
|
||||
|
||||
private _adjustOptionsForRightHandSide(options: Readonly<editorBrowser.IDiffEditorConstructionOptions>): IEditorConstructionOptions {
|
||||
const result = this._adjustOptionsForSubEditor(options);
|
||||
if (options.modifiedAriaLabel) {
|
||||
result.ariaLabel = options.modifiedAriaLabel;
|
||||
}
|
||||
result.ariaLabel += ariaNavigationTip;
|
||||
this._updateAriaLabel(result);
|
||||
result.wordWrapOverride1 = this._options.diffWordWrap;
|
||||
result.revealHorizontalRightPadding = EditorOptions.revealHorizontalRightPadding.defaultValue + DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH;
|
||||
result.scrollbar!.verticalHasArrows = false;
|
||||
@@ -2767,6 +2778,7 @@ function validateDiffEditorOptions(options: Readonly<IDiffEditorOptions>, defaul
|
||||
renderOverviewRuler: validateBooleanOption(options.renderOverviewRuler, defaults.renderOverviewRuler),
|
||||
diffWordWrap: validateDiffWordWrap(options.diffWordWrap, defaults.diffWordWrap),
|
||||
diffAlgorithm: validateStringSetOption(options.diffAlgorithm, defaults.diffAlgorithm, ['legacy', 'advanced'], { 'smart': 'legacy', 'experimental': 'advanced' }),
|
||||
accessibilityVerbose: validateBooleanOption(options.accessibilityVerbose, defaults.accessibilityVerbose),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -30,10 +30,11 @@ import { ThemeIcon } from 'vs/base/common/themables';
|
||||
import { Constants } from 'vs/base/common/uint';
|
||||
import { Codicon } from 'vs/base/common/codicons';
|
||||
import { registerIcon } from 'vs/platform/theme/common/iconRegistry';
|
||||
import { ILanguageIdCodec } from 'vs/editor/common/languages';
|
||||
import { ILanguageService } from 'vs/editor/common/languages/language';
|
||||
import { ILineChange } from 'vs/editor/common/diff/smartLinesDiffComputer';
|
||||
import { AudioCue, IAudioCueService } from 'vs/platform/audioCues/browser/audioCueService';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { ILineChange } from 'vs/editor/common/diff/smartLinesDiffComputer';
|
||||
import { ILanguageIdCodec } from 'vs/editor/common/languages';
|
||||
|
||||
const DIFF_LINES_PADDING = 3;
|
||||
|
||||
@@ -102,7 +103,8 @@ export class DiffReview extends Disposable {
|
||||
constructor(
|
||||
diffEditor: DiffEditorWidget,
|
||||
@ILanguageService private readonly _languageService: ILanguageService,
|
||||
@IAudioCueService private readonly _audioCueService: IAudioCueService
|
||||
@IAudioCueService private readonly _audioCueService: IAudioCueService,
|
||||
@IConfigurationService private readonly _configurationService: IConfigurationService
|
||||
) {
|
||||
super();
|
||||
this._diffEditor = diffEditor;
|
||||
@@ -180,6 +182,11 @@ export class DiffReview extends Disposable {
|
||||
this.accept();
|
||||
}
|
||||
}));
|
||||
this._register(this._configurationService.onDidChangeConfiguration(e => {
|
||||
if (e.affectsConfiguration('accessibility.verbosity.diff-editor')) {
|
||||
this._diffEditor.updateOptions({ accessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.diff-editor') });
|
||||
}
|
||||
}));
|
||||
this._diffs = [];
|
||||
this._currentDiff = null;
|
||||
}
|
||||
|
||||
@@ -784,6 +784,11 @@ export interface IDiffEditorBaseOptions {
|
||||
* Diff Algorithm
|
||||
*/
|
||||
diffAlgorithm?: 'legacy' | 'advanced' | IDocumentDiffProvider;
|
||||
|
||||
/**
|
||||
* Whether the diff editor aria label should be verbose.
|
||||
*/
|
||||
accessibilityVerbose?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Vendored
+4
@@ -3836,6 +3836,10 @@ declare namespace monaco.editor {
|
||||
* Diff Algorithm
|
||||
*/
|
||||
diffAlgorithm?: 'legacy' | 'advanced' | IDocumentDiffProvider;
|
||||
/**
|
||||
* Whether the diff editor aria label should be verbose.
|
||||
*/
|
||||
accessibilityVerbose?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { registerAccessibilityConfiguration } from 'vs/workbench/contrib/accessibility/browser/accessibilityContribution';
|
||||
|
||||
registerAccessibilityConfiguration();
|
||||
@@ -0,0 +1,33 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { localize } from 'vs/nls';
|
||||
import { Extensions, IConfigurationNode, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import { Registry } from 'vs/platform/registry/common/platform';
|
||||
|
||||
const configuration: IConfigurationNode = {
|
||||
id: 'accessibility',
|
||||
title: localize('accessibilityConfigurationTitle', "Accessibility"),
|
||||
type: 'object',
|
||||
properties: {
|
||||
'accessibility.verbosity.terminal': {
|
||||
description: localize('verbosity.terminal.description', 'Provide information about how to access the terminal accessibility help menu when the terminal is focused'),
|
||||
type: 'boolean',
|
||||
default: true,
|
||||
tags: ['accessibility']
|
||||
},
|
||||
'accessibility.verbosity.diff-editor': {
|
||||
description: localize('verbosity.diff-editor.description', 'Provide information about how to navigate changes in the diff editor when it is focused'),
|
||||
type: 'boolean',
|
||||
default: true,
|
||||
tags: ['accessibility']
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export function registerAccessibilityConfiguration() {
|
||||
const configurationRegistry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);
|
||||
configurationRegistry.registerConfiguration(configuration);
|
||||
}
|
||||
@@ -502,7 +502,8 @@ abstract class AbstractElementRenderer extends Disposable {
|
||||
dimension: {
|
||||
height: this.cell.layoutInfo.metadataHeight,
|
||||
width: this.cell.getComputedCellContainerWidth(this.notebookEditor.getLayoutInfo(), true, true)
|
||||
}
|
||||
},
|
||||
accessibilityVerbose: this.configurationService.getValue<boolean>('accessibility.verbosity.diff-editor') ?? false
|
||||
}, {
|
||||
originalEditor: getOptimizedNestedCodeEditorWidgetOptions(),
|
||||
modifiedEditor: getOptimizedNestedCodeEditorWidgetOptions()
|
||||
|
||||
@@ -524,6 +524,9 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
});
|
||||
|
||||
this._register(this._configurationService.onDidChangeConfiguration(async e => {
|
||||
if (e.affectsConfiguration('accessibility.verbosity.terminal')) {
|
||||
this._setAriaLabel(this.xterm?.raw, this._instanceId, this.title);
|
||||
}
|
||||
if (e.affectsConfiguration('terminal.integrated')) {
|
||||
this.updateConfig();
|
||||
this.setVisible(this._isVisible);
|
||||
@@ -1942,7 +1945,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
labelParts.push(nls.localize('terminalScreenReaderMode', "Run the command: Toggle Screen Reader Accessibility Mode for an optimized screen reader experience"));
|
||||
}
|
||||
const accessibilityHelpKeybinding = this._keybindingService.lookupKeybinding(TerminalCommandId.ShowTerminalAccessibilityHelp)?.getLabel();
|
||||
if (accessibilityHelpKeybinding) {
|
||||
if (this._configurationService.getValue('accessibility.verbosity.terminal') && accessibilityHelpKeybinding) {
|
||||
labelParts.push(nls.localize('terminalHelpAriaLabel', "Use {0} for terminal accessibility help", accessibilityHelpKeybinding));
|
||||
}
|
||||
xterm.textarea.setAttribute('aria-label', labelParts.join('\n'));
|
||||
|
||||
@@ -362,4 +362,7 @@ import 'vs/workbench/contrib/deprecatedExtensionMigrator/browser/deprecatedExten
|
||||
// Bracket Pair Colorizer 2 Telemetry
|
||||
import 'vs/workbench/contrib/bracketPairColorizer2Telemetry/browser/bracketPairColorizer2Telemetry.contribution';
|
||||
|
||||
// Accessibility
|
||||
import 'vs/workbench/contrib/accessibility/browser/accessibility.contribution';
|
||||
|
||||
//#endregion
|
||||
|
||||
Reference in New Issue
Block a user