mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-11 18:48:33 -05:00
Merge from vscode 718331d6f3ebd1b571530ab499edb266ddd493d5
This commit is contained in:
@@ -2640,14 +2640,16 @@ export class TextModel extends Disposable implements model.ITextModel {
|
||||
let goDown = true;
|
||||
let indent = 0;
|
||||
|
||||
let initialIndent = 0;
|
||||
|
||||
for (let distance = 0; goUp || goDown; distance++) {
|
||||
const upLineNumber = lineNumber - distance;
|
||||
const downLineNumber = lineNumber + distance;
|
||||
|
||||
if (distance !== 0 && (upLineNumber < 1 || upLineNumber < minLineNumber)) {
|
||||
if (distance > 1 && (upLineNumber < 1 || upLineNumber < minLineNumber)) {
|
||||
goUp = false;
|
||||
}
|
||||
if (distance !== 0 && (downLineNumber > lineCount || downLineNumber > maxLineNumber)) {
|
||||
if (distance > 1 && (downLineNumber > lineCount || downLineNumber > maxLineNumber)) {
|
||||
goDown = false;
|
||||
}
|
||||
if (distance > 50000) {
|
||||
@@ -2656,10 +2658,9 @@ export class TextModel extends Disposable implements model.ITextModel {
|
||||
goDown = false;
|
||||
}
|
||||
|
||||
let upLineIndentLevel: number = -1;
|
||||
if (goUp) {
|
||||
// compute indent level going up
|
||||
let upLineIndentLevel: number;
|
||||
|
||||
const currentIndent = this._computeIndentLevel(upLineNumber - 1);
|
||||
if (currentIndent >= 0) {
|
||||
// This line has content (besides whitespace)
|
||||
@@ -2671,30 +2672,11 @@ export class TextModel extends Disposable implements model.ITextModel {
|
||||
up_resolveIndents(upLineNumber);
|
||||
upLineIndentLevel = this._getIndentLevelForWhitespaceLine(offSide, up_aboveContentLineIndent, up_belowContentLineIndent);
|
||||
}
|
||||
|
||||
if (distance === 0) {
|
||||
// This is the initial line number
|
||||
startLineNumber = upLineNumber;
|
||||
endLineNumber = downLineNumber;
|
||||
indent = upLineIndentLevel;
|
||||
if (indent === 0) {
|
||||
// No need to continue
|
||||
return { startLineNumber, endLineNumber, indent };
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (upLineIndentLevel >= indent) {
|
||||
startLineNumber = upLineNumber;
|
||||
} else {
|
||||
goUp = false;
|
||||
}
|
||||
}
|
||||
|
||||
let downLineIndentLevel = -1;
|
||||
if (goDown) {
|
||||
// compute indent level going down
|
||||
let downLineIndentLevel: number;
|
||||
|
||||
const currentIndent = this._computeIndentLevel(downLineNumber - 1);
|
||||
if (currentIndent >= 0) {
|
||||
// This line has content (besides whitespace)
|
||||
@@ -2706,7 +2688,50 @@ export class TextModel extends Disposable implements model.ITextModel {
|
||||
down_resolveIndents(downLineNumber);
|
||||
downLineIndentLevel = this._getIndentLevelForWhitespaceLine(offSide, down_aboveContentLineIndent, down_belowContentLineIndent);
|
||||
}
|
||||
}
|
||||
|
||||
if (distance === 0) {
|
||||
initialIndent = upLineIndentLevel;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (distance === 1) {
|
||||
if (downLineNumber <= lineCount && downLineIndentLevel >= 0 && initialIndent + 1 === downLineIndentLevel) {
|
||||
// This is the beginning of a scope, we have special handling here, since we want the
|
||||
// child scope indent to be active, not the parent scope
|
||||
goUp = false;
|
||||
startLineNumber = downLineNumber;
|
||||
endLineNumber = downLineNumber;
|
||||
indent = downLineIndentLevel;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (upLineNumber >= 1 && upLineIndentLevel >= 0 && upLineIndentLevel - 1 === initialIndent) {
|
||||
// This is the end of a scope, just like above
|
||||
goDown = false;
|
||||
startLineNumber = upLineNumber;
|
||||
endLineNumber = upLineNumber;
|
||||
indent = upLineIndentLevel;
|
||||
continue;
|
||||
}
|
||||
|
||||
startLineNumber = lineNumber;
|
||||
endLineNumber = lineNumber;
|
||||
indent = initialIndent;
|
||||
if (indent === 0) {
|
||||
// No need to continue
|
||||
return { startLineNumber, endLineNumber, indent };
|
||||
}
|
||||
}
|
||||
|
||||
if (goUp) {
|
||||
if (upLineIndentLevel >= indent) {
|
||||
startLineNumber = upLineNumber;
|
||||
} else {
|
||||
goUp = false;
|
||||
}
|
||||
}
|
||||
if (goDown) {
|
||||
if (downLineIndentLevel >= indent) {
|
||||
endLineNumber = downLineNumber;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user