mirror of
https://github.com/microsoft/vscode.git
synced 2026-06-02 13:45:52 +01:00
Merge pull request #152529 from MonadChains/wrapping-indent-bugfix
This commit is contained in:
@@ -573,72 +573,69 @@ export class ViewModelLinesFromProjectedModel implements IViewModelLines {
|
||||
);
|
||||
|
||||
for (const viewLineInfo of group.viewLines) {
|
||||
if (viewLineInfo.isWrappedLineContinuation && this.getMinColumnOfViewLine(viewLineInfo) === 1) {
|
||||
// Don't add indent guides when the wrapped line continuation has no wrapping-indentation.
|
||||
resultPerViewLine.push([]);
|
||||
} else {
|
||||
const bracketGuides = bracketGuidesPerModelLine[viewLineInfo.modelLineNumber - modelRangeStartLineNumber];
|
||||
|
||||
// visibleColumns stay as they are (this is a bug and needs to be fixed, but it is not a regression)
|
||||
// model-columns must be converted to view-model columns.
|
||||
const result = bracketGuides.map(g => {
|
||||
if (g.forWrappedLinesAfterColumn !== -1) {
|
||||
const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.forWrappedLinesAfterColumn);
|
||||
if (p.lineNumber >= viewLineInfo.modelLineWrappedLineIdx) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
const bracketGuides = bracketGuidesPerModelLine[viewLineInfo.modelLineNumber - modelRangeStartLineNumber];
|
||||
|
||||
if (g.forWrappedLinesBeforeOrAtColumn !== -1) {
|
||||
const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.forWrappedLinesBeforeOrAtColumn);
|
||||
if (p.lineNumber < viewLineInfo.modelLineWrappedLineIdx) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if (!g.horizontalLine) {
|
||||
return g;
|
||||
}
|
||||
|
||||
let column = -1;
|
||||
if (g.column !== -1) {
|
||||
const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.column);
|
||||
if (p.lineNumber === viewLineInfo.modelLineWrappedLineIdx) {
|
||||
column = p.column;
|
||||
} else if (p.lineNumber < viewLineInfo.modelLineWrappedLineIdx) {
|
||||
column = this.getMinColumnOfViewLine(viewLineInfo);
|
||||
} else if (p.lineNumber > viewLineInfo.modelLineWrappedLineIdx) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
const viewPosition = this.convertModelPositionToViewPosition(viewLineInfo.modelLineNumber, g.horizontalLine.endColumn);
|
||||
const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.horizontalLine.endColumn);
|
||||
if (p.lineNumber === viewLineInfo.modelLineWrappedLineIdx) {
|
||||
return new IndentGuide(g.visibleColumn, column, g.className,
|
||||
new IndentGuideHorizontalLine(g.horizontalLine.top,
|
||||
viewPosition.column),
|
||||
- 1,
|
||||
-1,
|
||||
);
|
||||
} else if (p.lineNumber < viewLineInfo.modelLineWrappedLineIdx) {
|
||||
// visibleColumns stay as they are (this is a bug and needs to be fixed, but it is not a regression)
|
||||
// model-columns must be converted to view-model columns.
|
||||
const result = bracketGuides.map(g => {
|
||||
if (g.forWrappedLinesAfterColumn !== -1) {
|
||||
const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.forWrappedLinesAfterColumn);
|
||||
if (p.lineNumber >= viewLineInfo.modelLineWrappedLineIdx) {
|
||||
return undefined;
|
||||
} else {
|
||||
if (g.visibleColumn !== -1) {
|
||||
// Don't repeat horizontal lines that use visibleColumn for unrelated lines.
|
||||
return undefined;
|
||||
}
|
||||
return new IndentGuide(g.visibleColumn, column, g.className,
|
||||
new IndentGuideHorizontalLine(g.horizontalLine.top,
|
||||
this.getMaxColumnOfViewLine(viewLineInfo)
|
||||
),
|
||||
-1,
|
||||
-1,
|
||||
);
|
||||
}
|
||||
});
|
||||
resultPerViewLine.push(result.filter((r): r is IndentGuide => !!r));
|
||||
}
|
||||
}
|
||||
|
||||
if (g.forWrappedLinesBeforeOrAtColumn !== -1) {
|
||||
const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.forWrappedLinesBeforeOrAtColumn);
|
||||
if (p.lineNumber < viewLineInfo.modelLineWrappedLineIdx) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if (!g.horizontalLine) {
|
||||
return g;
|
||||
}
|
||||
|
||||
let column = -1;
|
||||
if (g.column !== -1) {
|
||||
const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.column);
|
||||
if (p.lineNumber === viewLineInfo.modelLineWrappedLineIdx) {
|
||||
column = p.column;
|
||||
} else if (p.lineNumber < viewLineInfo.modelLineWrappedLineIdx) {
|
||||
column = this.getMinColumnOfViewLine(viewLineInfo);
|
||||
} else if (p.lineNumber > viewLineInfo.modelLineWrappedLineIdx) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
const viewPosition = this.convertModelPositionToViewPosition(viewLineInfo.modelLineNumber, g.horizontalLine.endColumn);
|
||||
const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.horizontalLine.endColumn);
|
||||
if (p.lineNumber === viewLineInfo.modelLineWrappedLineIdx) {
|
||||
return new IndentGuide(g.visibleColumn, column, g.className,
|
||||
new IndentGuideHorizontalLine(g.horizontalLine.top,
|
||||
viewPosition.column),
|
||||
- 1,
|
||||
-1,
|
||||
);
|
||||
} else if (p.lineNumber < viewLineInfo.modelLineWrappedLineIdx) {
|
||||
return undefined;
|
||||
} else {
|
||||
if (g.visibleColumn !== -1) {
|
||||
// Don't repeat horizontal lines that use visibleColumn for unrelated lines.
|
||||
return undefined;
|
||||
}
|
||||
return new IndentGuide(g.visibleColumn, column, g.className,
|
||||
new IndentGuideHorizontalLine(g.horizontalLine.top,
|
||||
this.getMaxColumnOfViewLine(viewLineInfo)
|
||||
),
|
||||
-1,
|
||||
-1,
|
||||
);
|
||||
}
|
||||
});
|
||||
resultPerViewLine.push(result.filter((r): r is IndentGuide => !!r));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user