Skip to content

Commit 09b41be

Browse files
committed
review changes
1 parent a4505ae commit 09b41be

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ export class InteractiveEditorWidget {
183183
private _isLayouting: boolean = false;
184184
private _preferredExpansionState: ExpansionState | undefined;
185185
private _expansionState: ExpansionState = ExpansionState.NOT_CROPPED;
186+
private _indentationWidth: number = 0;
186187

187188
constructor(
188189
private readonly parentEditor: ICodeEditor,
@@ -464,6 +465,14 @@ export class InteractiveEditorWidget {
464465
this._preferredExpansionState = expansionState;
465466
}
466467

468+
set indentationWidth(indentationWidth: number) {
469+
this._indentationWidth = indentationWidth;
470+
}
471+
472+
get indentationWidth(): number {
473+
return this._indentationWidth;
474+
}
475+
467476
updateMarkdownMessage(message: Node | undefined) {
468477
this._elements.markdownMessage.classList.toggle('hidden', !message);
469478
let expansionState: ExpansionState;
@@ -764,7 +773,7 @@ export class InteractiveEditorZoneWidget extends ZoneWidget {
764773

765774
const info = this.editor.getLayoutInfo();
766775
const maxWidth = !this.widget.showsAnyPreview() ? 640 : Number.MAX_SAFE_INTEGER;
767-
const width = Math.min(maxWidth, info.contentWidth - (info.glyphMarginWidth + info.decorationsWidth));
776+
const width = Math.min(maxWidth, info.contentWidth - (info.glyphMarginWidth + info.decorationsWidth + this.widget.indentationWidth));
768777
this._dimension = new Dimension(width, heightInPixel);
769778
this.widget.domNode.style.width = `${width}px`;
770779
this.widget.layout(this._dimension);
@@ -793,16 +802,19 @@ export class InteractiveEditorZoneWidget extends ZoneWidget {
793802
const info = this.editor.getLayoutInfo();
794803
const startLineNumber = selectionRange.getStartPosition().lineNumber;
795804
const endLineNumber = selectionRange.getEndPosition().lineNumber;
796-
let lineNumberForIndentation = endLineNumber;
805+
const viewModel = this.editor._getViewModel();
806+
let indentationLineNumber = endLineNumber;
807+
let indentationLevel = viewModel?.getLineFirstNonWhitespaceColumn(endLineNumber);
797808
for (let lineNumber = endLineNumber; lineNumber >= startLineNumber; lineNumber--) {
798-
const lineContent = this.editor.getModel()?.getLineContent(lineNumber);
799-
if (lineContent && lineContent !== '') {
800-
lineNumberForIndentation = lineNumber;
809+
const currentIndentationLevel = viewModel?.getLineFirstNonWhitespaceColumn(lineNumber);
810+
if (currentIndentationLevel && currentIndentationLevel !== 0) {
811+
indentationLineNumber = lineNumber;
812+
indentationLevel = currentIndentationLevel;
801813
break;
802814
}
803815
}
804-
const indentationLevel = this.editor._getViewModel()?.getLineFirstNonWhitespaceColumn(lineNumberForIndentation);
805-
const spaceLeft = info.lineNumbersWidth + info.glyphMarginWidth + info.decorationsWidth + (indentationLevel ? this.editor.getOffsetForColumn(lineNumberForIndentation, indentationLevel) : 0);
816+
this.widget.indentationWidth = (indentationLevel ? this.editor.getOffsetForColumn(indentationLineNumber, indentationLevel) : 0);
817+
const spaceLeft = info.lineNumbersWidth + info.glyphMarginWidth + info.decorationsWidth + this.widget.indentationWidth;
806818
const spaceRight = info.minimap.minimapWidth + info.verticalScrollbarWidth;
807819
this.widget.domNode.style.marginLeft = `${spaceLeft}px`;
808820
this.widget.domNode.style.marginRight = `${spaceRight}px`;

0 commit comments

Comments
 (0)