mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-26 03:03:50 +01:00
fix #195612
This commit is contained in:
@@ -56,7 +56,6 @@ export const IAccessibleNotificationService = createDecorator<IAccessibleNotific
|
||||
export interface IAccessibleNotificationService {
|
||||
readonly _serviceBrand: undefined;
|
||||
notify(event: AccessibleNotificationEvent): void;
|
||||
notifySaved(userGesture: boolean): void;
|
||||
}
|
||||
|
||||
export const enum AccessibleNotificationEvent {
|
||||
|
||||
@@ -14,7 +14,6 @@ import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editor
|
||||
import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService';
|
||||
import { IWorkingCopy, WorkingCopyCapabilities } from 'vs/workbench/services/workingCopy/common/workingCopy';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
|
||||
|
||||
export class EditorAutoSave extends Disposable implements IWorkbenchContribution {
|
||||
|
||||
@@ -33,8 +32,7 @@ export class EditorAutoSave extends Disposable implements IWorkbenchContribution
|
||||
@IEditorService private readonly editorService: IEditorService,
|
||||
@IEditorGroupsService private readonly editorGroupService: IEditorGroupsService,
|
||||
@IWorkingCopyService private readonly workingCopyService: IWorkingCopyService,
|
||||
@ILogService private readonly logService: ILogService,
|
||||
@IAccessibleNotificationService private readonly _accessibleNotificationService: IAccessibleNotificationService
|
||||
@ILogService private readonly logService: ILogService
|
||||
) {
|
||||
super();
|
||||
|
||||
@@ -198,7 +196,6 @@ export class EditorAutoSave extends Disposable implements IWorkbenchContribution
|
||||
// Save if dirty
|
||||
if (workingCopy.isDirty()) {
|
||||
this.logService.trace(`[editor auto save] running auto save`, workingCopy.resource.toString(), workingCopy.typeId);
|
||||
this._accessibleNotificationService.notifySaved(false);
|
||||
workingCopy.save({ reason: SaveReason.AUTO });
|
||||
}
|
||||
}, this.autoSaveAfterDelay);
|
||||
|
||||
@@ -14,7 +14,7 @@ import { EditorAccessibilityHelpContribution, HoverAccessibleViewContribution, I
|
||||
import { AccessibilityStatus } from 'vs/workbench/contrib/accessibility/browser/accessibilityStatus';
|
||||
import { CommentsAccessibilityHelpContribution } from 'vs/workbench/contrib/comments/browser/comments.contribution';
|
||||
import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
|
||||
import { AccessibleNotificationService } from 'vs/platform/accessibility/browser/accessibleNotificationService';
|
||||
import { AccessibleNotificationService } from 'vs/workbench/contrib/accessibility/browser/accessibleNotificationService';
|
||||
|
||||
registerAccessibilityConfiguration();
|
||||
registerSingleton(IAccessibleViewService, AccessibleViewService, InstantiationType.Delayed);
|
||||
|
||||
+6
-3
@@ -8,6 +8,8 @@ import { localize } from 'vs/nls';
|
||||
import { AccessibleNotificationEvent, IAccessibilityService, IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
|
||||
import { AudioCue, IAudioCueService, Sound } from 'vs/platform/audioCues/browser/audioCueService';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { SaveReason } from 'vs/workbench/common/editor';
|
||||
import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService';
|
||||
|
||||
export class AccessibleNotificationService extends Disposable implements IAccessibleNotificationService {
|
||||
declare readonly _serviceBrand: undefined;
|
||||
@@ -15,10 +17,12 @@ export class AccessibleNotificationService extends Disposable implements IAccess
|
||||
constructor(
|
||||
@IAudioCueService private readonly _audioCueService: IAudioCueService,
|
||||
@IConfigurationService private readonly _configurationService: IConfigurationService,
|
||||
@IAccessibilityService private readonly _accessibilityService: IAccessibilityService) {
|
||||
@IAccessibilityService private readonly _accessibilityService: IAccessibilityService,
|
||||
@IWorkingCopyService private readonly _workingCopyService: IWorkingCopyService) {
|
||||
super();
|
||||
this._events.set(AccessibleNotificationEvent.Clear, { audioCue: AudioCue.clear, alertMessage: localize('cleared', "Cleared") });
|
||||
this._events.set(AccessibleNotificationEvent.Save, { audioCue: AudioCue.save, alertMessage: localize('saved', "Saved") });
|
||||
this._register(this._workingCopyService.onDidSave((e) => this._notifySaved(e.reason === SaveReason.EXPLICIT)));
|
||||
}
|
||||
|
||||
notify(event: AccessibleNotificationEvent): void {
|
||||
@@ -31,7 +35,7 @@ export class AccessibleNotificationService extends Disposable implements IAccess
|
||||
}
|
||||
}
|
||||
|
||||
notifySaved(userGesture: boolean): void {
|
||||
private _notifySaved(userGesture: boolean): void {
|
||||
const { audioCue, alertMessage } = this._events.get(AccessibleNotificationEvent.Save)!;
|
||||
const alertSetting: NotificationSetting = this._configurationService.getValue('accessibility.alert.save');
|
||||
if (this._shouldNotify(alertSetting, userGesture)) {
|
||||
@@ -55,5 +59,4 @@ export class TestAccessibleNotificationService extends Disposable implements IAc
|
||||
declare readonly _serviceBrand: undefined;
|
||||
|
||||
notify(event: AccessibleNotificationEvent): void { }
|
||||
notifySaved(userGesture: boolean): void { }
|
||||
}
|
||||
@@ -24,7 +24,7 @@ import { TestWorkspace } from 'vs/platform/workspace/test/common/testWorkspace';
|
||||
import { TestContextService } from 'vs/workbench/test/common/workbenchTestServices';
|
||||
import { UriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentityService';
|
||||
import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
|
||||
import { TestAccessibleNotificationService } from 'vs/platform/accessibility/browser/accessibleNotificationService';
|
||||
import { TestAccessibleNotificationService } from 'vs/workbench/contrib/accessibility/browser/accessibleNotificationService';
|
||||
|
||||
suite('EditorAutoSave', () => {
|
||||
|
||||
|
||||
+1
-1
@@ -7,7 +7,6 @@ import * as assert from 'assert';
|
||||
import { importAMDNodeModule } from 'vs/amdX';
|
||||
import { isWindows } from 'vs/base/common/platform';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { TestAccessibleNotificationService } from 'vs/platform/accessibility/browser/accessibleNotificationService';
|
||||
import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
|
||||
@@ -22,6 +21,7 @@ import { TerminalCapabilityStore } from 'vs/platform/terminal/common/capabilitie
|
||||
import { ITerminalLogService } from 'vs/platform/terminal/common/terminal';
|
||||
import { IThemeService } from 'vs/platform/theme/common/themeService';
|
||||
import { TestThemeService } from 'vs/platform/theme/test/common/testThemeService';
|
||||
import { TestAccessibleNotificationService } from 'vs/workbench/contrib/accessibility/browser/accessibleNotificationService';
|
||||
import { TerminalConfigHelper } from 'vs/workbench/contrib/terminal/browser/terminalConfigHelper';
|
||||
import { writeP } from 'vs/workbench/contrib/terminal/browser/terminalTestHelpers';
|
||||
import { XtermTerminal } from 'vs/workbench/contrib/terminal/browser/xterm/xtermTerminal';
|
||||
|
||||
@@ -33,7 +33,6 @@ import { IWorkspaceTrustRequestService, WorkspaceTrustUriResponse } from 'vs/pla
|
||||
import { IHostService } from 'vs/workbench/services/host/browser/host';
|
||||
import { findGroup } from 'vs/workbench/services/editor/common/editorGroupFinder';
|
||||
import { ITextEditorService } from 'vs/workbench/services/textfile/common/textEditorService';
|
||||
import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
|
||||
|
||||
export class EditorService extends Disposable implements EditorServiceImpl {
|
||||
|
||||
@@ -71,8 +70,7 @@ export class EditorService extends Disposable implements EditorServiceImpl {
|
||||
@IEditorResolverService private readonly editorResolverService: IEditorResolverService,
|
||||
@IWorkspaceTrustRequestService private readonly workspaceTrustRequestService: IWorkspaceTrustRequestService,
|
||||
@IHostService private readonly hostService: IHostService,
|
||||
@ITextEditorService private readonly textEditorService: ITextEditorService,
|
||||
@IAccessibleNotificationService private readonly accessibleNotificationService: IAccessibleNotificationService
|
||||
@ITextEditorService private readonly textEditorService: ITextEditorService
|
||||
) {
|
||||
super();
|
||||
|
||||
@@ -974,12 +972,8 @@ export class EditorService extends Disposable implements EditorServiceImpl {
|
||||
}
|
||||
}
|
||||
}
|
||||
const success = saveResults.every(result => !!result);
|
||||
if (success) {
|
||||
this.accessibleNotificationService.notifySaved(options?.reason === SaveReason.EXPLICIT);
|
||||
}
|
||||
return {
|
||||
success,
|
||||
success: saveResults.every(result => !!result),
|
||||
editors: coalesce(saveResults)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ import { IHoverOptions, IHoverService, IHoverWidget } from 'vs/workbench/service
|
||||
import { IRemoteExtensionsScannerService } from 'vs/platform/remote/common/remoteExtensionsScanner';
|
||||
import { IRemoteSocketFactoryService, RemoteSocketFactoryService } from 'vs/platform/remote/common/remoteSocketFactoryService';
|
||||
import { EditorParts } from 'vs/workbench/browser/parts/editor/editorParts';
|
||||
import { TestAccessibleNotificationService } from 'vs/platform/accessibility/browser/accessibleNotificationService';
|
||||
import { TestAccessibleNotificationService } from 'vs/workbench/contrib/accessibility/browser/accessibleNotificationService';
|
||||
|
||||
export function createFileEditorInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput {
|
||||
return instantiationService.createInstance(FileEditorInput, resource, undefined, undefined, undefined, undefined, undefined, undefined);
|
||||
|
||||
Reference in New Issue
Block a user