mirror of
https://github.com/Microsoft/vscode
synced 2024-10-06 11:26:07 +00:00
Fixes #10339: Fix invocations of formatter to pass indentSize
This commit is contained in:
parent
3bf1e49c76
commit
2c6d4ad1da
|
@ -12,7 +12,7 @@ import { IRange, Range } from 'vs/editor/common/core/range';
|
|||
import { Selection } from 'vs/editor/common/core/selection';
|
||||
import { IModelContentChange, IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent, ModelRawContentChangedEvent } from 'vs/editor/common/model/textModelEvents';
|
||||
import { SearchData } from 'vs/editor/common/model/textModelSearch';
|
||||
import { LanguageId, LanguageIdentifier } from 'vs/editor/common/modes';
|
||||
import { LanguageId, LanguageIdentifier, FormattingOptions } from 'vs/editor/common/modes';
|
||||
import { ITextSnapshot } from 'vs/platform/files/common/files';
|
||||
import { ThemeColor } from 'vs/platform/theme/common/themeService';
|
||||
|
||||
|
@ -500,6 +500,12 @@ export interface ITextModel {
|
|||
*/
|
||||
getOptions(): TextModelResolvedOptions;
|
||||
|
||||
/**
|
||||
* Get the formatting options for this model.
|
||||
* @internal
|
||||
*/
|
||||
getFormattingOptions(): FormattingOptions;
|
||||
|
||||
/**
|
||||
* Get the current version id of the model.
|
||||
* Anytime a change happens to the model (even undo/redo),
|
||||
|
|
|
@ -25,7 +25,7 @@ import { IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguag
|
|||
import { SearchData, SearchParams, TextModelSearch } from 'vs/editor/common/model/textModelSearch';
|
||||
import { ModelLinesTokens, ModelTokensChangedEventBuilder } from 'vs/editor/common/model/textModelTokens';
|
||||
import { getWordAtText } from 'vs/editor/common/model/wordHelper';
|
||||
import { IState, LanguageId, LanguageIdentifier, TokenizationRegistry } from 'vs/editor/common/modes';
|
||||
import { IState, LanguageId, LanguageIdentifier, TokenizationRegistry, FormattingOptions } from 'vs/editor/common/modes';
|
||||
import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry';
|
||||
import { NULL_LANGUAGE_IDENTIFIER } from 'vs/editor/common/modes/nullMode';
|
||||
import { ignoreBracketsInToken } from 'vs/editor/common/modes/supports';
|
||||
|
@ -590,6 +590,13 @@ export class TextModel extends Disposable implements model.ITextModel {
|
|||
return this._options;
|
||||
}
|
||||
|
||||
public getFormattingOptions(): FormattingOptions {
|
||||
return {
|
||||
tabSize: this._options.indentSize,
|
||||
insertSpaces: this._options.insertSpaces
|
||||
};
|
||||
}
|
||||
|
||||
public updateOptions(_newOpts: model.ITextModelUpdateOptions): void {
|
||||
this._assertNotDisposed();
|
||||
let tabSize = (typeof _newOpts.tabSize !== 'undefined') ? _newOpts.tabSize : this._options.tabSize;
|
||||
|
|
|
@ -213,34 +213,30 @@ class FormatOnType implements editorCommon.IEditorContribution {
|
|||
|
||||
});
|
||||
|
||||
let modelOpts = model.getOptions();
|
||||
|
||||
getOnTypeFormattingEdits(
|
||||
this._telemetryService,
|
||||
this._workerService,
|
||||
model,
|
||||
position,
|
||||
ch,
|
||||
{
|
||||
tabSize: modelOpts.tabSize,
|
||||
insertSpaces: modelOpts.insertSpaces
|
||||
}).then(edits => {
|
||||
model.getFormattingOptions()
|
||||
).then(edits => {
|
||||
|
||||
unbind.dispose();
|
||||
unbind.dispose();
|
||||
|
||||
if (canceled) {
|
||||
return;
|
||||
}
|
||||
if (canceled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isNonEmptyArray(edits)) {
|
||||
FormattingEdit.execute(this._editor, edits);
|
||||
alertFormattingEdits(edits);
|
||||
}
|
||||
if (isNonEmptyArray(edits)) {
|
||||
FormattingEdit.execute(this._editor, edits);
|
||||
alertFormattingEdits(edits);
|
||||
}
|
||||
|
||||
}, (err) => {
|
||||
unbind.dispose();
|
||||
throw err;
|
||||
});
|
||||
}, (err) => {
|
||||
unbind.dispose();
|
||||
throw err;
|
||||
});
|
||||
}
|
||||
|
||||
public getId(): string {
|
||||
|
@ -311,8 +307,7 @@ class FormatOnPaste implements editorCommon.IEditorContribution {
|
|||
}
|
||||
|
||||
const model = this.editor.getModel();
|
||||
const { tabSize, insertSpaces } = model.getOptions();
|
||||
formatDocumentRange(this.telemetryService, this.workerService, this.editor, range, { tabSize, insertSpaces }, CancellationToken.None);
|
||||
formatDocumentRange(this.telemetryService, this.workerService, this.editor, range, model.getFormattingOptions(), CancellationToken.None);
|
||||
}
|
||||
|
||||
public getId(): string {
|
||||
|
@ -354,8 +349,7 @@ export class FormatDocumentAction extends EditorAction {
|
|||
}
|
||||
const workerService = accessor.get(IEditorWorkerService);
|
||||
const telemetryService = accessor.get(ITelemetryService);
|
||||
const { tabSize, insertSpaces } = editor.getModel().getOptions();
|
||||
return formatDocument(telemetryService, workerService, editor, { tabSize, insertSpaces }, CancellationToken.None);
|
||||
return formatDocument(telemetryService, workerService, editor, editor.getModel().getFormattingOptions(), CancellationToken.None);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -386,8 +380,7 @@ export class FormatSelectionAction extends EditorAction {
|
|||
}
|
||||
const workerService = accessor.get(IEditorWorkerService);
|
||||
const telemetryService = accessor.get(ITelemetryService);
|
||||
const { tabSize, insertSpaces } = editor.getModel().getOptions();
|
||||
return formatDocumentRange(telemetryService, workerService, editor, FormatRangeType.Selection, { tabSize, insertSpaces }, CancellationToken.None);
|
||||
return formatDocumentRange(telemetryService, workerService, editor, FormatRangeType.Selection, editor.getModel().getFormattingOptions(), CancellationToken.None);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -403,13 +396,12 @@ CommandsRegistry.registerCommand('editor.action.format', accessor => {
|
|||
if (!editor || !editor.hasModel()) {
|
||||
return undefined;
|
||||
}
|
||||
const { tabSize, insertSpaces } = editor.getModel().getOptions();
|
||||
const workerService = accessor.get(IEditorWorkerService);
|
||||
const telemetryService = accessor.get(ITelemetryService);
|
||||
|
||||
if (editor.getSelection().isEmpty()) {
|
||||
return formatDocument(telemetryService, workerService, editor, { tabSize, insertSpaces }, CancellationToken.None);
|
||||
return formatDocument(telemetryService, workerService, editor, editor.getModel().getFormattingOptions(), CancellationToken.None);
|
||||
} else {
|
||||
return formatDocumentRange(telemetryService, workerService, editor, FormatRangeType.Selection, { tabSize, insertSpaces }, CancellationToken.None);
|
||||
return formatDocumentRange(telemetryService, workerService, editor, FormatRangeType.Selection, editor.getModel().getFormattingOptions(), CancellationToken.None);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -231,13 +231,12 @@ class FormatOnSaveParticipant implements ISaveParticipantParticipant {
|
|||
}
|
||||
|
||||
const versionNow = model.getVersionId();
|
||||
const { tabSize, insertSpaces } = model.getOptions();
|
||||
|
||||
const timeout = this._configurationService.getValue<number>('editor.formatOnSaveTimeout', { overrideIdentifier: model.getLanguageIdentifier().language, resource: editorModel.getResource() });
|
||||
|
||||
return new Promise<ISingleEditOperation[] | null | undefined>((resolve, reject) => {
|
||||
let source = new CancellationTokenSource();
|
||||
let request = getDocumentFormattingEdits(this._telemetryService, this._editorWorkerService, model, { tabSize, insertSpaces }, FormatMode.Auto, source.token);
|
||||
let request = getDocumentFormattingEdits(this._telemetryService, this._editorWorkerService, model, model.getFormattingOptions(), FormatMode.Auto, source.token);
|
||||
|
||||
setTimeout(() => {
|
||||
reject(localize('timeout.formatOnSave', "Aborted format on save after {0}ms", timeout));
|
||||
|
|
Loading…
Reference in a new issue