diff --git a/packages/ai-native/src/browser/ai-core.contribution.ts b/packages/ai-native/src/browser/ai-core.contribution.ts index 3e9249bad8..ab5e66e0ec 100644 --- a/packages/ai-native/src/browser/ai-core.contribution.ts +++ b/packages/ai-native/src/browser/ai-core.contribution.ts @@ -422,8 +422,8 @@ export class AINativeBrowserContribution execute: async (visible: boolean) => { if (!visible) { this.aiCompletionsService.hideStatusBarItem(); + this.aiInlineCompletionsProvider.setVisibleCompletion(false); this.aiInlineCompletionsProvider.cancelRequest(); - this.aiCompletionsService.setVisibleCompletion(false); } }, }); diff --git a/packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts b/packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts index 01db85c240..70cf57991f 100644 --- a/packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts +++ b/packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts @@ -21,6 +21,7 @@ import { SuggestItemInfo, SuggestWidgetAdaptor, } from '@opensumi/monaco-editor-core/esm/vs/editor/contrib/inlineCompletions/browser/suggestWidgetInlineCompletionProvider'; +import { SuggestController } from '@opensumi/monaco-editor-core/esm/vs/editor/contrib/suggest/browser/suggestController'; import { ContextKeyExpr } from '@opensumi/monaco-editor-core/esm/vs/platform/contextkey/common/contextkey'; import { AINativeContextKey } from '../../contextkey/ai-native.contextkey.service'; @@ -129,6 +130,19 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll } }), ); + + observableDisposable.addDispose( + autorun((reader) => { + const state = inlineCompletionsController.model.read(reader)?.state.read(reader); + const suggestController = SuggestController.get(this.monacoEditor); + // 当阴影字符超出一行的时候,强制让 suggest 面板向上展示,避免遮挡补全内容 + if (state && state.primaryGhostText?.lineCount >= 2) { + suggestController?.forceRenderingAbove(); + } else { + suggestController?.stopForceRenderingAbove(); + } + }), + ); } };