From 09b41bea74c9aaa1b899755bac147488cee5e69e Mon Sep 17 00:00:00 2001 From: Aiday Marlen Kyzy Date: Thu, 8 Jun 2023 12:19:51 +0200 Subject: [PATCH] review changes --- .../inlineChat/browser/inlineChatWidget.ts | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts index 7eab018b327..c08a9849965 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts @@ -183,6 +183,7 @@ export class InteractiveEditorWidget { private _isLayouting: boolean = false; private _preferredExpansionState: ExpansionState | undefined; private _expansionState: ExpansionState = ExpansionState.NOT_CROPPED; + private _indentationWidth: number = 0; constructor( private readonly parentEditor: ICodeEditor, @@ -464,6 +465,14 @@ export class InteractiveEditorWidget { this._preferredExpansionState = expansionState; } + set indentationWidth(indentationWidth: number) { + this._indentationWidth = indentationWidth; + } + + get indentationWidth(): number { + return this._indentationWidth; + } + updateMarkdownMessage(message: Node | undefined) { this._elements.markdownMessage.classList.toggle('hidden', !message); let expansionState: ExpansionState; @@ -764,7 +773,7 @@ export class InteractiveEditorZoneWidget extends ZoneWidget { const info = this.editor.getLayoutInfo(); const maxWidth = !this.widget.showsAnyPreview() ? 640 : Number.MAX_SAFE_INTEGER; - const width = Math.min(maxWidth, info.contentWidth - (info.glyphMarginWidth + info.decorationsWidth)); + const width = Math.min(maxWidth, info.contentWidth - (info.glyphMarginWidth + info.decorationsWidth + this.widget.indentationWidth)); this._dimension = new Dimension(width, heightInPixel); this.widget.domNode.style.width = `${width}px`; this.widget.layout(this._dimension); @@ -793,16 +802,19 @@ export class InteractiveEditorZoneWidget extends ZoneWidget { const info = this.editor.getLayoutInfo(); const startLineNumber = selectionRange.getStartPosition().lineNumber; const endLineNumber = selectionRange.getEndPosition().lineNumber; - let lineNumberForIndentation = endLineNumber; + const viewModel = this.editor._getViewModel(); + let indentationLineNumber = endLineNumber; + let indentationLevel = viewModel?.getLineFirstNonWhitespaceColumn(endLineNumber); for (let lineNumber = endLineNumber; lineNumber >= startLineNumber; lineNumber--) { - const lineContent = this.editor.getModel()?.getLineContent(lineNumber); - if (lineContent && lineContent !== '') { - lineNumberForIndentation = lineNumber; + const currentIndentationLevel = viewModel?.getLineFirstNonWhitespaceColumn(lineNumber); + if (currentIndentationLevel && currentIndentationLevel !== 0) { + indentationLineNumber = lineNumber; + indentationLevel = currentIndentationLevel; break; } } - const indentationLevel = this.editor._getViewModel()?.getLineFirstNonWhitespaceColumn(lineNumberForIndentation); - const spaceLeft = info.lineNumbersWidth + info.glyphMarginWidth + info.decorationsWidth + (indentationLevel ? this.editor.getOffsetForColumn(lineNumberForIndentation, indentationLevel) : 0); + this.widget.indentationWidth = (indentationLevel ? this.editor.getOffsetForColumn(indentationLineNumber, indentationLevel) : 0); + const spaceLeft = info.lineNumbersWidth + info.glyphMarginWidth + info.decorationsWidth + this.widget.indentationWidth; const spaceRight = info.minimap.minimapWidth + info.verticalScrollbarWidth; this.widget.domNode.style.marginLeft = `${spaceLeft}px`; this.widget.domNode.style.marginRight = `${spaceRight}px`;