提交 f6097950 编写于 作者: A Alex Dima

Funnel getLineIndentGuide to viewLineParts

上级 40479e9d
......@@ -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'),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册