Skip to content

Commit 3ca6d4b

Browse files
Kapil Borledaviwil
Kapil Borle
authored andcommitted
Remove unused items from DocumentFormatter.ts
1 parent 8670e4c commit 3ca6d4b

File tree

1 file changed

+2
-228
lines changed

1 file changed

+2
-228
lines changed

src/features/DocumentFormatter.ts

+2-228
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ import * as Settings from '../settings';
3131
import * as Utils from '../utils';
3232
import * as AnimatedStatusBar from '../controls/animatedStatusBar';
3333

34-
export namespace ScriptFileMarkersRequest {
35-
export const type = new RequestType<any, any, void, void>("powerShell/getScriptFileMarkers");
36-
}
37-
3834
export namespace ScriptRegionRequest {
3935
export const type = new RequestType<any, any, void, void>("powerShell/getScriptRegion");
4036
}
@@ -50,29 +46,6 @@ interface ScriptRegionRequestResult {
5046
scriptRegion: ScriptRegion;
5147
}
5248

53-
// TODO move some of the common interface to a separate file?
54-
interface ScriptFileMarkersRequestParams {
55-
fileUri: string;
56-
settings: any;
57-
}
58-
59-
interface ScriptFileMarkersRequestResultParams {
60-
markers: ScriptFileMarker[];
61-
}
62-
63-
interface ScriptFileMarker {
64-
message: string;
65-
level: ScriptFileMarkerLevel;
66-
scriptRegion: ScriptRegion;
67-
correction: MarkerCorrection;
68-
}
69-
70-
enum ScriptFileMarkerLevel {
71-
Information = 0,
72-
Warning,
73-
Error
74-
}
75-
7649
interface ScriptRegion {
7750
file: string;
7851
text: string;
@@ -84,11 +57,6 @@ interface ScriptRegion {
8457
endOffset: number;
8558
}
8659

87-
interface MarkerCorrection {
88-
name: string;
89-
edits: ScriptRegion[];
90-
}
91-
9260
function toRange(scriptRegion: ScriptRegion): vscode.Range {
9361
return new vscode.Range(
9462
scriptRegion.startLineNumber - 1,
@@ -101,24 +69,6 @@ function toOneBasedPosition(position: Position): Position {
10169
return position.translate({ lineDelta: 1, characterDelta: 1 });
10270
}
10371

104-
function editComparer(leftOperand: ScriptRegion, rightOperand: ScriptRegion): number {
105-
if (leftOperand.startLineNumber < rightOperand.startLineNumber) {
106-
return -1;
107-
} else if (leftOperand.startLineNumber > rightOperand.startLineNumber) {
108-
return 1;
109-
} else {
110-
if (leftOperand.startColumnNumber < rightOperand.startColumnNumber) {
111-
return -1;
112-
}
113-
else if (leftOperand.startColumnNumber > rightOperand.startColumnNumber) {
114-
return 1;
115-
}
116-
else {
117-
return 0;
118-
}
119-
}
120-
}
121-
12272
class DocumentLocker {
12373
private lockedDocuments: Object;
12474

@@ -171,31 +121,16 @@ class PSDocumentFormattingEditProvider implements
171121
DocumentFormattingEditProvider,
172122
DocumentRangeFormattingEditProvider,
173123
OnTypeFormattingEditProvider {
124+
174125
private static documentLocker = new DocumentLocker();
175126
private static statusBarTracker = new Object();
176127
private languageClient: LanguageClient;
177-
private lineDiff: number;
178-
179-
// The order in which the rules will be executed starting from the first element.
180-
private readonly ruleOrder: string[] = [
181-
"PSPlaceCloseBrace",
182-
"PSPlaceOpenBrace",
183-
"PSUseConsistentWhitespace",
184-
"PSUseConsistentIndentation",
185-
"PSAlignAssignmentStatement"]
186-
187-
// Allows edits to be undone and redone is a single step.
188-
// It is usefuld to have undo stops after every edit while debugging
189-
// hence we keep this as an option but set it true by default.
190-
private aggregateUndoStop: boolean;
191128

192129
private get emptyPromise(): Promise<TextEdit[]> {
193130
return Promise.resolve(TextEdit[0]);
194131
}
195132

196-
constructor(aggregateUndoStop = true) {
197-
this.aggregateUndoStop = aggregateUndoStop;
198-
this.lineDiff = 0;
133+
constructor() {
199134
}
200135

201136
provideDocumentFormattingEdits(
@@ -300,13 +235,6 @@ class PSDocumentFormattingEditProvider implements
300235
});
301236
}
302237

303-
private snapRangeToEdges(range: Range, document: TextDocument): Range {
304-
return range.with({
305-
start: range.start.with({ character: 0 }),
306-
end: document.lineAt(range.end.line).range.end
307-
});
308-
}
309-
310238
private getEditor(document: TextDocument): TextEditor {
311239
return Window.visibleTextEditors.find((e, n, obj) => { return e.document === document; });
312240
}
@@ -319,160 +247,6 @@ class PSDocumentFormattingEditProvider implements
319247
PSDocumentFormattingEditProvider.documentLocker.lock(document, unlockWhenDone);
320248
}
321249

322-
private executeRulesInOrder(
323-
editor: TextEditor,
324-
range: Range,
325-
options: FormattingOptions,
326-
index: number): Thenable<TextEdit[]> {
327-
if (this.languageClient !== null && index < this.ruleOrder.length) {
328-
let rule: string = this.ruleOrder[index];
329-
let uniqueEdits: ScriptRegion[] = [];
330-
let document: TextDocument = editor.document;
331-
let edits: ScriptRegion[];
332-
333-
return this.languageClient.sendRequest(
334-
ScriptFileMarkersRequest.type,
335-
{
336-
fileUri: document.uri.toString(),
337-
settings: this.getSettings(rule)
338-
})
339-
.then((result: ScriptFileMarkersRequestResultParams) => {
340-
edits = result.markers.map(marker => { return marker.correction.edits[0]; });
341-
342-
// sort in decending order of the edits
343-
edits.sort((left: ScriptRegion, right: ScriptRegion) => {
344-
return -1 * editComparer(left, right);
345-
});
346-
347-
348-
// we need to update the range as the edits might
349-
// have changed the original layout
350-
if (range !== null) {
351-
if (this.lineDiff !== 0) {
352-
range = range.with({ end: range.end.translate({ lineDelta: this.lineDiff }) });
353-
}
354-
355-
// extend the range such that it starts at the first character of the
356-
// start line of the range.
357-
range = this.snapRangeToEdges(range, document);
358-
359-
// filter edits that are contained in the input range
360-
edits = edits.filter(edit => range.contains(toRange(edit).start));
361-
}
362-
363-
// We cannot handle multiple edits at the same point hence we
364-
// filter the markers so that there is only one edit per region
365-
if (edits.length > 0) {
366-
uniqueEdits.push(edits[0]);
367-
for (let edit of edits.slice(1)) {
368-
let lastEdit: ScriptRegion = uniqueEdits[uniqueEdits.length - 1];
369-
if (lastEdit.startLineNumber !== edit.startLineNumber
370-
|| (edit.startColumnNumber + edit.text.length) < lastEdit.startColumnNumber) {
371-
uniqueEdits.push(edit);
372-
}
373-
}
374-
}
375-
376-
// reset line difference to 0
377-
this.lineDiff = 0;
378-
379-
// we do not return a valid array because our text edits
380-
// need to be executed in a particular order and it is
381-
// easier if we perform the edits ourselves
382-
return this.applyEdit(editor, uniqueEdits, 0, index);
383-
})
384-
.then(() => {
385-
// execute the same rule again if we left out violations
386-
// on the same line
387-
let newIndex: number = index + 1;
388-
if (uniqueEdits.length !== edits.length) {
389-
newIndex = index;
390-
}
391-
392-
return this.executeRulesInOrder(editor, range, options, newIndex);
393-
});
394-
} else {
395-
return this.emptyPromise;
396-
}
397-
}
398-
399-
private applyEdit(
400-
editor: TextEditor,
401-
edits: ScriptRegion[],
402-
markerIndex: number,
403-
ruleIndex: number): Thenable<void> {
404-
if (markerIndex >= edits.length) {
405-
return;
406-
}
407-
408-
let undoStopAfter = !this.aggregateUndoStop || (ruleIndex === this.ruleOrder.length - 1 && markerIndex === edits.length - 1);
409-
let undoStopBefore = !this.aggregateUndoStop || (ruleIndex === 0 && markerIndex === 0);
410-
let edit: ScriptRegion = edits[markerIndex];
411-
let editRange: Range = toRange(edit);
412-
413-
414-
// accumulate the changes in number of lines
415-
// get the difference between the number of lines in the replacement text and
416-
// that of the original text
417-
this.lineDiff += this.getNumLines(edit.text) - (editRange.end.line - editRange.start.line + 1);
418-
return editor.edit((editBuilder) => {
419-
editBuilder.replace(
420-
editRange,
421-
edit.text);
422-
},
423-
{
424-
undoStopAfter: undoStopAfter,
425-
undoStopBefore: undoStopBefore
426-
}).then((isEditApplied) => {
427-
return this.applyEdit(editor, edits, markerIndex + 1, ruleIndex);
428-
}); // TODO handle rejection
429-
}
430-
431-
private getNumLines(text: string): number {
432-
return text.split(/\r?\n/).length;
433-
}
434-
435-
private getSettings(rule: string): any {
436-
let psSettings: Settings.ISettings = Settings.load(Utils.PowerShellLanguageId);
437-
let ruleSettings = new Object();
438-
ruleSettings["Enable"] = true;
439-
440-
switch (rule) {
441-
case "PSPlaceOpenBrace":
442-
ruleSettings["OnSameLine"] = psSettings.codeFormatting.openBraceOnSameLine;
443-
ruleSettings["NewLineAfter"] = psSettings.codeFormatting.newLineAfterOpenBrace;
444-
ruleSettings["IgnoreOneLineBlock"] = psSettings.codeFormatting.ignoreOneLineBlock;
445-
break;
446-
447-
case "PSPlaceCloseBrace":
448-
ruleSettings["IgnoreOneLineBlock"] = psSettings.codeFormatting.ignoreOneLineBlock;
449-
ruleSettings["NewLineAfter"] = psSettings.codeFormatting.newLineAfterCloseBrace;
450-
break;
451-
452-
case "PSUseConsistentIndentation":
453-
ruleSettings["IndentationSize"] = vscode.workspace.getConfiguration("editor").get<number>("tabSize");
454-
break;
455-
456-
case "PSUseConsistentWhitespace":
457-
ruleSettings["CheckOpenBrace"] = psSettings.codeFormatting.whitespaceBeforeOpenBrace;
458-
ruleSettings["CheckOpenParen"] = psSettings.codeFormatting.whitespaceBeforeOpenParen;
459-
ruleSettings["CheckOperator"] = psSettings.codeFormatting.whitespaceAroundOperator;
460-
ruleSettings["CheckSeparator"] = psSettings.codeFormatting.whitespaceAfterSeparator;
461-
break;
462-
463-
case "PSAlignAssignmentStatement":
464-
ruleSettings["CheckHashtable"] = psSettings.codeFormatting.alignPropertyValuePairs;
465-
break;
466-
467-
default:
468-
break;
469-
}
470-
471-
let settings: Object = new Object();
472-
settings[rule] = ruleSettings;
473-
return settings;
474-
}
475-
476250
private getEditorSettings(): { insertSpaces: boolean, tabSize: number } {
477251
let editorConfiguration = vscode.workspace.getConfiguration("editor");
478252
return {

0 commit comments

Comments
 (0)