From 1bfab84d0d71051cc70486ed396d01a79a936696 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 29 Jun 2016 10:43:59 +0200 Subject: [PATCH] Fixes #8425: tweak getLineIndentGuide around indent ranges start/end --- src/vs/editor/common/model/textModel.ts | 6 +++ .../test/common/model/textModel.test.ts | 37 ++++++++++++------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/vs/editor/common/model/textModel.ts b/src/vs/editor/common/model/textModel.ts index f8e227b4120..95f71783102 100644 --- a/src/vs/editor/common/model/textModel.ts +++ b/src/vs/editor/common/model/textModel.ts @@ -502,9 +502,15 @@ export class TextModel extends OrderGuaranteeEventEmitter implements editorCommo for (let i = indentRanges.length - 1; i >= 0; i--) { let rng = indentRanges[i]; + if (rng.startLineNumber === lineNumber) { + return Math.ceil(rng.indent / this._options.tabSize); + } if (rng.startLineNumber < lineNumber && lineNumber <= rng.endLineNumber) { return 1 + Math.floor(rng.indent / this._options.tabSize); } + if (rng.endLineNumber + 1 === lineNumber) { + return Math.ceil(rng.indent / this._options.tabSize); + } } return 0; diff --git a/src/vs/editor/test/common/model/textModel.test.ts b/src/vs/editor/test/common/model/textModel.test.ts index 34560f5aff3..0e28102bad0 100644 --- a/src/vs/editor/test/common/model/textModel.test.ts +++ b/src/vs/editor/test/common/model/textModel.test.ts @@ -599,7 +599,7 @@ suite('TextModel.getLineIndentGuide', () => { [1, ' A'], [1, ' A'], [2, ' A'], - [0, 'A'], + [1, 'A'], ]); }); @@ -613,19 +613,19 @@ suite('TextModel.getLineIndentGuide', () => { test('getLineIndentGuide Java', () => { assertIndentGuides([ - [0, 'class A {'], - [1, ' void foo() {'], - [1, ' console.log(1);'], - [1, ' console.log(2);'], - [1, ' }'], - [1, ''], - [1, ' void bar() {'], - [1, ' console.log(3);'], - [1, ' }'], - [0, '}'], - [0, 'interface B {'], - [1, ' void bar();'], - [0, '}'], + /* 1*/[0, 'class A {'], + /* 2*/[1, ' void foo() {'], + /* 3*/[1, ' console.log(1);'], + /* 4*/[1, ' console.log(2);'], + /* 5*/[1, ' }'], + /* 6*/[1, ''], + /* 7*/[1, ' void bar() {'], + /* 8*/[1, ' console.log(3);'], + /* 9*/[1, ' }'], + /*10*/[0, '}'], + /*11*/[0, 'interface B {'], + /*12*/[1, ' void bar();'], + /*13*/[0, '}'], ]); }); @@ -688,4 +688,13 @@ suite('TextModel.getLineIndentGuide', () => { /*17*/[ 0, '}'], ]); }); + + test('issue #8425 - Missing indentation lines for first level indentation', () => { + assertIndentGuides([ + [1, '\tindent1'], + [2, '\t\tindent2'], + [2, '\t\tindent2'], + [1, '\tindent1'], + ]); + }); }); -- GitLab