Skip to content

Commit 7fbe3bc

Browse files
authored
style: improve inline input decoration (#4343)
1 parent 44b56d6 commit 7fbe3bc

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

packages/ai-native/src/browser/widget/inline-input/inline-input.controller.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import { EInlineChatStatus, EResultKind } from '../inline-chat/inline-chat.servi
2828
import { InlineDiffController } from '../inline-diff';
2929
import { InlineInputPreviewDecorationID } from '../internal.type';
3030

31-
3231
import { InlineInputChatWidget } from './inline-input-widget';
3332
import styles from './inline-input.module.less';
3433
import { InlineInputService } from './inline-input.service';
@@ -344,7 +343,23 @@ export class InlineInputController extends BaseAIMonacoEditorController {
344343
this.inputDisposable = new Disposable();
345344
}
346345

347-
monacoEditor.setSelection(selection);
346+
const decorationsCollection = monacoEditor.createDecorationsCollection();
347+
decorationsCollection.set([
348+
{
349+
range: monaco.Range.fromPositions(
350+
{ lineNumber: selection.startLineNumber, column: 1 },
351+
{
352+
lineNumber: selection.endLineNumber,
353+
column: monacoEditor.getModel()!.getLineMaxColumn(selection.endLineNumber),
354+
},
355+
),
356+
options: ModelDecorationOptions.register({
357+
description: InlineInputPreviewDecorationID,
358+
isWholeLine: true,
359+
className: styles.input_decoration_pending_container,
360+
}),
361+
},
362+
]);
348363

349364
const inlineInputChatWidget = this.injector.get(InlineInputChatWidget, [monacoEditor, defaultValue]);
350365
inlineInputChatWidget.show({ selection });
@@ -356,6 +371,7 @@ export class InlineInputController extends BaseAIMonacoEditorController {
356371
this.inputDisposable.addDispose(
357372
inlineInputChatWidget.onDispose(() => {
358373
this.cancelToken();
374+
decorationsCollection.clear();
359375
this.aiNativeContextKey.inlineInputWidgetIsVisible.set(false);
360376
}),
361377
);
@@ -375,6 +391,7 @@ export class InlineInputController extends BaseAIMonacoEditorController {
375391
inlineInputChatWidget.onInteractiveInputValue(async (value) => {
376392
inputValue = value;
377393
monacoEditor.focus();
394+
decorationsCollection.clear();
378395

379396
const handler = this.inlineInputService.getInteractiveInputHandler();
380397

packages/ai-native/src/browser/widget/inline-input/inline-input.module.less

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,7 @@
55
.input_wrapper {
66
transform: translateY(-4px);
77
}
8+
9+
.input_decoration_pending_container {
10+
background-color: var(--vscode-diffEditor-unchangedCodeBackground);
11+
}

0 commit comments

Comments
 (0)