mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-03-31 09:10:30 -04:00
Vscode merge (#4582)
* Merge from vscode 37cb23d3dd4f9433d56d4ba5ea3203580719a0bd * fix issues with merges * bump node version in azpipe * replace license headers * remove duplicate launch task * fix build errors * fix build errors * fix tslint issues * working through package and linux build issues * more work * wip * fix packaged builds * working through linux build errors * wip * wip * wip * fix mac and linux file limits * iterate linux pipeline * disable editor typing * revert series to parallel * remove optimize vscode from linux * fix linting issues * revert testing change * add work round for new node * readd packaging for extensions * fix issue with angular not resolving decorator dependencies
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle';
|
||||
import { Registry } from 'vs/platform/registry/common/platform';
|
||||
import { Extensions, IWorkbenchContributionsRegistry } from 'vs/workbench/common/contributions';
|
||||
import { INotificationService, Severity } from 'vs/platform/notification/common/notification';
|
||||
import { setFormatterConflictCallback, FormatMode, FormatKind } from 'vs/editor/contrib/format/format';
|
||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { localize } from 'vs/nls';
|
||||
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
|
||||
import { VIEWLET_ID, IExtensionsViewlet } from 'vs/workbench/contrib/extensions/common/extensions';
|
||||
|
||||
|
||||
class FormattingConflictHandler {
|
||||
|
||||
private _registration: IDisposable;
|
||||
|
||||
constructor(
|
||||
@INotificationService notificationService: INotificationService,
|
||||
@IViewletService private readonly _viewletService: IViewletService,
|
||||
) {
|
||||
|
||||
this._registration = setFormatterConflictCallback((ids, model, mode) => {
|
||||
if (mode & FormatMode.Auto) {
|
||||
return;
|
||||
}
|
||||
if (ids.length === 0) {
|
||||
const langName = model.getLanguageIdentifier().language;
|
||||
const message = mode & FormatKind.Document
|
||||
? localize('no.documentprovider', "There is no document formatter for '{0}'-files installed.", langName)
|
||||
: localize('no.selectionprovider', "There is no selection formatter for '{0}'-files installed.", langName);
|
||||
|
||||
const choice = {
|
||||
label: localize('install.formatter', "Install Formatter..."),
|
||||
run: () => {
|
||||
return this._viewletService.openViewlet(VIEWLET_ID, true).then(viewlet => {
|
||||
if (viewlet) {
|
||||
(viewlet as IExtensionsViewlet).search(`category:formatters ${langName}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
notificationService.prompt(Severity.Info, message, [choice]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
this._registration.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
Registry.as<IWorkbenchContributionsRegistry>(Extensions.Workbench).registerWorkbenchContribution(
|
||||
FormattingConflictHandler,
|
||||
LifecyclePhase.Restored
|
||||
);
|
||||
Reference in New Issue
Block a user