mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 17:19:48 +01:00
Funnel getLineIndentGuide to viewLineParts
This commit is contained in:
@@ -119,7 +119,7 @@ export class ViewLine implements IVisibleLineData {
|
||||
this._context.model.getLineTokens(lineNumber),
|
||||
inlineDecorations,
|
||||
this._renderWhitespace,
|
||||
this._indentGuides
|
||||
this._indentGuides ? this._context.model.getLineIndentGuide(lineNumber) : 0
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1836,8 +1836,8 @@ class InlineViewZonesComputer extends ViewZonesComputer {
|
||||
let lineContent = originalModel.getLineContent(lineNumber);
|
||||
|
||||
let lineTokens = new ViewLineTokens([new ViewLineToken(0, '')], 0, lineContent.length);
|
||||
|
||||
let parts = createLineParts(lineNumber, 1, lineContent, tabSize, lineTokens, decorations, config.viewInfo.renderWhitespace, config.viewInfo.indentGuides);
|
||||
let indentGuides = config.viewInfo.indentGuides ? originalModel.getLineIndentGuide(lineNumber) : 0;
|
||||
let parts = createLineParts(lineNumber, 1, lineContent, tabSize, lineTokens, decorations, config.viewInfo.renderWhitespace, indentGuides);
|
||||
|
||||
let r = renderLine(new RenderLineInput(
|
||||
lineContent,
|
||||
|
||||
@@ -14,7 +14,7 @@ function cmpLineDecorations(a:InlineDecoration, b:InlineDecoration): number {
|
||||
return Range.compareRangesUsingStarts(a.range, b.range);
|
||||
}
|
||||
|
||||
export function createLineParts(lineNumber:number, minLineColumn:number, lineContent:string, tabSize:number, lineTokens:ViewLineTokens, rawLineDecorations:InlineDecoration[], renderWhitespace:boolean, indentGuides:boolean): LineParts {
|
||||
export function createLineParts(lineNumber:number, minLineColumn:number, lineContent:string, tabSize:number, lineTokens:ViewLineTokens, rawLineDecorations:InlineDecoration[], renderWhitespace:boolean, indentGuides:number): LineParts {
|
||||
if (indentGuides || renderWhitespace) {
|
||||
let oldLength = rawLineDecorations.length;
|
||||
rawLineDecorations = insertCustomLineDecorations(indentGuides, renderWhitespace, lineNumber, lineContent, tabSize, lineTokens.getFauxIndentLength(), rawLineDecorations);
|
||||
@@ -100,8 +100,8 @@ function insertOneCustomLineDecoration(dest:InlineDecoration[], lineNumber:numbe
|
||||
dest.push(new InlineDecoration(new Range(lineNumber, startColumn, lineNumber, endColumn), className));
|
||||
}
|
||||
|
||||
function insertCustomLineDecorations(indentGuides:boolean, renderWhitespace:boolean, lineNumber:number, lineContent: string, tabSize:number, fauxIndentLength: number, rawLineDecorations: InlineDecoration[]): InlineDecoration[] {
|
||||
if (!indentGuides && !renderWhitespace) {
|
||||
function insertCustomLineDecorations(indentGuides:number, renderWhitespace:boolean, lineNumber:number, lineContent: string, tabSize:number, fauxIndentLength: number, rawLineDecorations: InlineDecoration[]): InlineDecoration[] {
|
||||
if (indentGuides === 0 && !renderWhitespace) {
|
||||
return rawLineDecorations;
|
||||
}
|
||||
|
||||
|
||||
@@ -633,6 +633,13 @@ export class SplitLinesCollection implements ILinesCollection {
|
||||
return this.lines[lineIndex].getOutputLineContent(this.model, lineIndex + 1, remainder);
|
||||
}
|
||||
|
||||
public getOutputIndentGuide(outputLineNumber:number): number {
|
||||
this._ensureValidState();
|
||||
outputLineNumber = this._toValidOutputLineNumber(outputLineNumber);
|
||||
let r = this.prefixSumComputer.getIndexOf(outputLineNumber - 1);
|
||||
return this.model.getLineIndentGuide(r.index + 1);
|
||||
}
|
||||
|
||||
public getOutputLineMinColumn(outputLineNumber:number): number {
|
||||
this._ensureValidState();
|
||||
outputLineNumber = this._toValidOutputLineNumber(outputLineNumber);
|
||||
|
||||
@@ -25,6 +25,7 @@ export interface IViewModel extends IEventEmitter {
|
||||
|
||||
getLineCount(): number;
|
||||
getLineContent(lineNumber:number): string;
|
||||
getLineIndentGuide(lineNumber:number): number;
|
||||
getLineMinColumn(lineNumber:number): number;
|
||||
getLineMaxColumn(lineNumber:number): number;
|
||||
getLineFirstNonWhitespaceColumn(lineNumber:number): number;
|
||||
|
||||
@@ -27,6 +27,7 @@ export interface ILinesCollection {
|
||||
onModelLineChanged(versionId:number, lineNumber:number, newText:string, emit:(evenType:string, payload:any)=>void): boolean;
|
||||
getOutputLineCount(): number;
|
||||
getOutputLineContent(outputLineNumber:number): string;
|
||||
getOutputIndentGuide(outputLineNumber:number): number;
|
||||
getOutputLineMinColumn(outputLineNumber:number): number;
|
||||
getOutputLineMaxColumn(outputLineNumber:number): number;
|
||||
getOutputLineTokens(outputLineNumber:number): ViewLineTokens;
|
||||
@@ -381,6 +382,10 @@ export class ViewModel extends EventEmitter implements IViewModel {
|
||||
return this.lines.getOutputLineContent(lineNumber);
|
||||
}
|
||||
|
||||
public getLineIndentGuide(lineNumber:number): number {
|
||||
return this.lines.getOutputIndentGuide(lineNumber);
|
||||
}
|
||||
|
||||
public getLineMinColumn(lineNumber:number): number {
|
||||
return this.lines.getOutputLineMinColumn(lineNumber);
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
]);
|
||||
});
|
||||
|
||||
function testCreateLineParts(lineContent: string, tokens: ViewLineToken[], fauxIndentLength: number, renderWhitespace:boolean, indentGuides:boolean, expected:ViewLineToken[]): void {
|
||||
function testCreateLineParts(lineContent: string, tokens: ViewLineToken[], fauxIndentLength: number, renderWhitespace:boolean, indentGuides:number, expected:ViewLineToken[]): void {
|
||||
let lineParts = createLineParts(1, 1, lineContent, 4, new ViewLineTokens(tokens, fauxIndentLength, lineContent.length), [], renderWhitespace, indentGuides);
|
||||
let actual = lineParts.getParts();
|
||||
|
||||
@@ -70,7 +70,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
false,
|
||||
false,
|
||||
0,
|
||||
[
|
||||
new ViewLineToken(0, '')
|
||||
]
|
||||
@@ -85,7 +85,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
false,
|
||||
false,
|
||||
0,
|
||||
[
|
||||
new ViewLineToken(0, 'a'),
|
||||
new ViewLineToken(6, 'b')
|
||||
@@ -102,7 +102,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
0,
|
||||
[
|
||||
new ViewLineToken(0, ' leading whitespace'),
|
||||
new ViewLineToken(4, 'a'),
|
||||
@@ -121,7 +121,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
0,
|
||||
[
|
||||
new ViewLineToken(0, ' leading whitespace'),
|
||||
new ViewLineToken(4, ' leading whitespace'),
|
||||
@@ -142,7 +142,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
0,
|
||||
[
|
||||
new ViewLineToken(0, ' leading whitespace'),
|
||||
new ViewLineToken(1, ' leading whitespace'),
|
||||
@@ -162,7 +162,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
0,
|
||||
[
|
||||
new ViewLineToken(0, ' leading whitespace'),
|
||||
new ViewLineToken(3, ' leading whitespace'),
|
||||
@@ -186,7 +186,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
[
|
||||
new ViewLineToken(0, ' indent-guide'),
|
||||
new ViewLineToken(4, 'a'),
|
||||
@@ -204,7 +204,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
false,
|
||||
true,
|
||||
2,
|
||||
[
|
||||
new ViewLineToken(0, ' indent-guide'),
|
||||
new ViewLineToken(4, ' indent-guide'),
|
||||
@@ -223,7 +223,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
false,
|
||||
true,
|
||||
2,
|
||||
[
|
||||
new ViewLineToken(0, ' indent-guide'),
|
||||
new ViewLineToken(1, ' indent-guide'),
|
||||
@@ -242,7 +242,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
false,
|
||||
true,
|
||||
2,
|
||||
[
|
||||
new ViewLineToken(0, ' indent-guide'),
|
||||
new ViewLineToken(3, ' indent-guide'),
|
||||
@@ -263,7 +263,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
0,
|
||||
true,
|
||||
true,
|
||||
2,
|
||||
[
|
||||
new ViewLineToken(0, ' leading whitespace indent-guide'),
|
||||
new ViewLineToken(3, ' leading whitespace indent-guide'),
|
||||
@@ -288,7 +288,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
2,
|
||||
true,
|
||||
false,
|
||||
0,
|
||||
[
|
||||
new ViewLineToken(0, ''),
|
||||
new ViewLineToken(2, ' leading whitespace'),
|
||||
@@ -312,7 +312,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
2,
|
||||
false,
|
||||
true,
|
||||
2,
|
||||
[
|
||||
new ViewLineToken(0, ' indent-guide'),
|
||||
new ViewLineToken(1, ' indent-guide'),
|
||||
@@ -333,7 +333,7 @@ suite('Editor ViewLayout - ViewLineParts', () => {
|
||||
],
|
||||
2,
|
||||
true,
|
||||
true,
|
||||
2,
|
||||
[
|
||||
new ViewLineToken(0, ' indent-guide'),
|
||||
new ViewLineToken(1, ' indent-guide'),
|
||||
|
||||
Reference in New Issue
Block a user