未验证 提交 14514ea3 编写于 作者: A Andy Barron 提交者: GitHub

initial support (#92681)

上级 662fef21
...@@ -26,11 +26,19 @@ const codeActionsOnSaveDefaultProperties = Object.freeze<IJSONSchemaMap>({ ...@@ -26,11 +26,19 @@ const codeActionsOnSaveDefaultProperties = Object.freeze<IJSONSchemaMap>({
}); });
const codeActionsOnSaveSchema: IConfigurationPropertySchema = { const codeActionsOnSaveSchema: IConfigurationPropertySchema = {
type: 'object', oneOf: [
properties: codeActionsOnSaveDefaultProperties, {
'additionalProperties': { type: 'object',
type: 'boolean' properties: codeActionsOnSaveDefaultProperties,
}, additionalProperties: {
type: 'boolean'
},
},
{
type: 'array',
items: { type: 'string' }
}
],
default: {}, default: {},
description: nls.localize('codeActionsOnSave', "Code action kinds to be run on save."), description: nls.localize('codeActionsOnSave', "Code action kinds to be run on save."),
scope: ConfigurationScope.LANGUAGE_OVERRIDABLE, scope: ConfigurationScope.LANGUAGE_OVERRIDABLE,
......
...@@ -241,14 +241,20 @@ class CodeActionOnSaveParticipant implements ITextFileSaveParticipant { ...@@ -241,14 +241,20 @@ class CodeActionOnSaveParticipant implements ITextFileSaveParticipant {
const model = editorModel.textEditorModel; const model = editorModel.textEditorModel;
const settingsOverrides = { overrideIdentifier: model.getLanguageIdentifier().language, resource: editorModel.resource }; const settingsOverrides = { overrideIdentifier: model.getLanguageIdentifier().language, resource: editorModel.resource };
const setting = this.configurationService.getValue<{ [kind: string]: boolean }>('editor.codeActionsOnSave', settingsOverrides); const setting = this.configurationService.getValue<{ [kind: string]: boolean } | string[]>('editor.codeActionsOnSave', settingsOverrides);
if (!setting) { if (!setting) {
return undefined; return undefined;
} }
const codeActionsOnSave = Object.keys(setting) const settingItems: string[] = Array.isArray(setting)
.filter(x => setting[x]).map(x => new CodeActionKind(x)) ? setting
.sort((a, b) => { : Object.keys(setting).filter(x => setting[x]);
const codeActionsOnSave = settingItems
.map(x => new CodeActionKind(x));
if (!Array.isArray(setting)) {
codeActionsOnSave.sort((a, b) => {
if (CodeActionKind.SourceFixAll.contains(a)) { if (CodeActionKind.SourceFixAll.contains(a)) {
if (CodeActionKind.SourceFixAll.contains(b)) { if (CodeActionKind.SourceFixAll.contains(b)) {
return 0; return 0;
...@@ -260,14 +266,17 @@ class CodeActionOnSaveParticipant implements ITextFileSaveParticipant { ...@@ -260,14 +266,17 @@ class CodeActionOnSaveParticipant implements ITextFileSaveParticipant {
} }
return 0; return 0;
}); });
}
if (!codeActionsOnSave.length) { if (!codeActionsOnSave.length) {
return undefined; return undefined;
} }
const excludedActions = Object.keys(setting) const excludedActions = Array.isArray(setting)
.filter(x => setting[x] === false) ? []
.map(x => new CodeActionKind(x)); : Object.keys(setting)
.filter(x => setting[x] === false)
.map(x => new CodeActionKind(x));
progress.report({ message: localize('codeaction', "Quick Fixes") }); progress.report({ message: localize('codeaction', "Quick Fixes") });
await this.applyOnSaveActions(model, codeActionsOnSave, excludedActions, progress, token); await this.applyOnSaveActions(model, codeActionsOnSave, excludedActions, progress, token);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册