Skip to content

Commit be760b0

Browse files
authored
fix how context key is updated (microsoft#229818)
1 parent c48773b commit be760b0

File tree

1 file changed

+7
-22
lines changed

1 file changed

+7
-22
lines changed

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

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
*--------------------------------------------------------------------------------------------*/
55
import { CancellationToken } from '../../../../base/common/cancellation.js';
66
import { Emitter, Event } from '../../../../base/common/event.js';
7-
import { DisposableMap, DisposableStore, IDisposable, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';
7+
import { DisposableStore, IDisposable, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';
88
import { Schemas } from '../../../../base/common/network.js';
99
import { URI } from '../../../../base/common/uri.js';
1010
import { generateUuid } from '../../../../base/common/uuid.js';
11-
import { IActiveCodeEditor, ICodeEditor } from '../../../../editor/browser/editorBrowser.js';
11+
import { IActiveCodeEditor, ICodeEditor, isCodeEditor, isCompositeEditor, isDiffEditor } from '../../../../editor/browser/editorBrowser.js';
1212
import { Range } from '../../../../editor/common/core/range.js';
1313
import { IValidEditOperation } from '../../../../editor/common/model.js';
1414
import { createTextBufferFactoryFromSnapshot } from '../../../../editor/common/model/textModel.js';
@@ -22,16 +22,14 @@ import { ITelemetryService } from '../../../../platform/telemetry/common/telemet
2222
import { DEFAULT_EDITOR_ASSOCIATION } from '../../../common/editor.js';
2323
import { ChatAgentLocation, IChatAgentService } from '../../chat/common/chatAgents.js';
2424
import { IChatService } from '../../chat/common/chatService.js';
25-
import { CTX_INLINE_CHAT_HAS_AGENT, CTX_INLINE_CHAT_POSSIBLE, EditMode, INLINE_CHAT_ID } from '../common/inlineChat.js';
25+
import { CTX_INLINE_CHAT_HAS_AGENT, CTX_INLINE_CHAT_POSSIBLE, EditMode } from '../common/inlineChat.js';
2626
import { IEditorService } from '../../../services/editor/common/editorService.js';
2727
import { UntitledTextEditorInput } from '../../../services/untitled/common/untitledTextEditorInput.js';
2828
import { HunkData, Session, SessionWholeRange, StashedSession, TelemetryData, TelemetryDataClassification } from './inlineChatSession.js';
2929
import { IInlineChatSessionEndEvent, IInlineChatSessionEvent, IInlineChatSessionService, ISessionKeyComputer } from './inlineChatSessionService.js';
3030
import { isEqual } from '../../../../base/common/resources.js';
3131
import { ILanguageService } from '../../../../editor/common/languages/language.js';
3232
import { ITextFileService } from '../../../services/textfile/common/textfiles.js';
33-
import { ICodeEditorService } from '../../../../editor/browser/services/codeEditorService.js';
34-
import { EditorOption } from '../../../../editor/common/config/editorOptions.js';
3533

3634

3735
type SessionData = {
@@ -328,7 +326,6 @@ export class InlineChatEnabler {
328326
constructor(
329327
@IContextKeyService contextKeyService: IContextKeyService,
330328
@IChatAgentService chatAgentService: IChatAgentService,
331-
@ICodeEditorService codeEditorService: ICodeEditorService,
332329
@IEditorService editorService: IEditorService,
333330
) {
334331
this._ctxHasProvider = CTX_INLINE_CHAT_HAS_AGENT.bindTo(contextKeyService);
@@ -343,25 +340,13 @@ export class InlineChatEnabler {
343340
updateAgent();
344341

345342
const updateEditor = () => {
346-
const editor = codeEditorService.getFocusedCodeEditor() ?? codeEditorService.getActiveCodeEditor();
347-
348-
this._ctxPossible.set(Boolean(editor
349-
&& editor.getContribution(INLINE_CHAT_ID)
350-
&& editor.hasWidgetFocus()
351-
&& !editor.getOption(EditorOption.readOnly)
352-
&& !editor.isSimpleWidget
353-
));
343+
const ctrl = editorService.activeEditorPane?.getControl();
344+
const isCodeEditorLike = isCodeEditor(ctrl) || isDiffEditor(ctrl) || isCompositeEditor(ctrl);
345+
this._ctxPossible.set(isCodeEditorLike);
354346
};
355347

356348
this._store.add(editorService.onDidActiveEditorChange(updateEditor));
357-
358-
const editorDisposables = this._store.add(new DisposableMap<ICodeEditor>());
359-
this._store.add(codeEditorService.onCodeEditorAdd(e => {
360-
editorDisposables.set(e, Event.any(e.onDidBlurEditorWidget, e.onDidFocusEditorWidget)(updateEditor));
361-
}));
362-
this._store.add(codeEditorService.onCodeEditorRemove(e => {
363-
editorDisposables.deleteAndDispose(e);
364-
}));
349+
updateEditor();
365350
}
366351

367352
dispose() {

0 commit comments

Comments
 (0)