Improve formatting features in the editor (#7104)
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
parent
cbf5fbf870
commit
26e6f8deca
8 changed files with 427 additions and 59 deletions
|
@ -25,11 +25,15 @@ const whitespacePredicate: Predicate = (index, offset, part) => {
|
|||
export default class Range {
|
||||
private _start: DocumentPosition;
|
||||
private _end: DocumentPosition;
|
||||
private _lastStart: DocumentPosition;
|
||||
private _initializedEmpty: boolean;
|
||||
|
||||
constructor(public readonly model: EditorModel, positionA: DocumentPosition, positionB = positionA) {
|
||||
const bIsLarger = positionA.compare(positionB) < 0;
|
||||
this._start = bIsLarger ? positionA : positionB;
|
||||
this._end = bIsLarger ? positionB : positionA;
|
||||
this._lastStart = this._start;
|
||||
this._initializedEmpty = this._start.index === this._end.index && this._start.offset == this._end.offset;
|
||||
}
|
||||
|
||||
public moveStartForwards(delta: number): void {
|
||||
|
@ -39,6 +43,22 @@ export default class Range {
|
|||
});
|
||||
}
|
||||
|
||||
public wasInitializedEmpty(): boolean {
|
||||
return this._initializedEmpty;
|
||||
}
|
||||
|
||||
public setWasEmpty(value: boolean) {
|
||||
this._initializedEmpty = value;
|
||||
}
|
||||
|
||||
public getLastStartingPosition(): DocumentPosition {
|
||||
return this._lastStart;
|
||||
}
|
||||
|
||||
public setLastStartingPosition(position: DocumentPosition): void {
|
||||
this._lastStart = position;
|
||||
}
|
||||
|
||||
public moveEndBackwards(delta: number): void {
|
||||
this._end = this._end.backwardsWhile(this.model, () => {
|
||||
delta -= 1;
|
||||
|
@ -47,6 +67,10 @@ export default class Range {
|
|||
}
|
||||
|
||||
public trim(): void {
|
||||
if (this.text.trim() === "") {
|
||||
this._start = this._end;
|
||||
return;
|
||||
}
|
||||
this._start = this._start.forwardsWhile(this.model, whitespacePredicate);
|
||||
this._end = this._end.backwardsWhile(this.model, whitespacePredicate);
|
||||
}
|
||||
|
@ -55,6 +79,10 @@ export default class Range {
|
|||
this._start = this._start.backwardsWhile(this.model, predicate);
|
||||
}
|
||||
|
||||
public expandForwardsWhile(predicate: Predicate): void {
|
||||
this._end = this._end.forwardsWhile(this.model, predicate);
|
||||
}
|
||||
|
||||
public get text(): string {
|
||||
let text = "";
|
||||
this._start.iteratePartsBetween(this._end, this.model, (part, startIdx, endIdx) => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue