mirror of
https://github.com/Microsoft/vscode
synced 2024-08-28 05:19:39 +00:00
Cleanup some inline chat debt (#209009)
* - make inline chat tab-able (fixes https://github.com/microsoft/vscode/issues/208569) - fix aria label * - move report issue into widget toolbar - some todo-cleanup * remove unused menuid
This commit is contained in:
parent
4b90a20d3a
commit
1d1c28eed1
|
@ -11,7 +11,7 @@ import { EmbeddedDiffEditorWidget } from 'vs/editor/browser/widget/diffEditor/em
|
||||||
import { EmbeddedCodeEditorWidget } from 'vs/editor/browser/widget/codeEditor/embeddedCodeEditorWidget';
|
import { EmbeddedCodeEditorWidget } from 'vs/editor/browser/widget/codeEditor/embeddedCodeEditorWidget';
|
||||||
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
|
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
|
||||||
import { InlineChatController, InlineChatRunOptions } from 'vs/workbench/contrib/inlineChat/browser/inlineChatController';
|
import { InlineChatController, InlineChatRunOptions } from 'vs/workbench/contrib/inlineChat/browser/inlineChatController';
|
||||||
import { CTX_INLINE_CHAT_FOCUSED, CTX_INLINE_CHAT_HAS_PROVIDER, CTX_INLINE_CHAT_INNER_CURSOR_FIRST, CTX_INLINE_CHAT_INNER_CURSOR_LAST, CTX_INLINE_CHAT_EMPTY, CTX_INLINE_CHAT_OUTER_CURSOR_POSITION, CTX_INLINE_CHAT_VISIBLE, MENU_INLINE_CHAT_WIDGET_DISCARD, MENU_INLINE_CHAT_WIDGET_STATUS, CTX_INLINE_CHAT_EDIT_MODE, EditMode, CTX_INLINE_CHAT_DOCUMENT_CHANGED, CTX_INLINE_CHAT_DID_EDIT, CTX_INLINE_CHAT_HAS_STASHED_SESSION, MENU_INLINE_CHAT_WIDGET_FEEDBACK, ACTION_ACCEPT_CHANGES, ACTION_REGENERATE_RESPONSE, CTX_INLINE_CHAT_RESPONSE_TYPES, InlineChatResponseTypes, ACTION_VIEW_IN_CHAT, CTX_INLINE_CHAT_USER_DID_EDIT, CTX_INLINE_CHAT_RESPONSE_FOCUSED, CTX_INLINE_CHAT_SUPPORT_ISSUE_REPORTING, InlineChatResponseFeedbackKind, CTX_INLINE_CHAT_CHANGE_SHOWS_DIFF, CTX_INLINE_CHAT_CHANGE_HAS_DIFF, MENU_INLINE_CHAT_WIDGET, ACTION_TOGGLE_DIFF } from 'vs/workbench/contrib/inlineChat/common/inlineChat';
|
import { CTX_INLINE_CHAT_FOCUSED, CTX_INLINE_CHAT_HAS_PROVIDER, CTX_INLINE_CHAT_INNER_CURSOR_FIRST, CTX_INLINE_CHAT_INNER_CURSOR_LAST, CTX_INLINE_CHAT_EMPTY, CTX_INLINE_CHAT_OUTER_CURSOR_POSITION, CTX_INLINE_CHAT_VISIBLE, MENU_INLINE_CHAT_WIDGET_DISCARD, MENU_INLINE_CHAT_WIDGET_STATUS, CTX_INLINE_CHAT_EDIT_MODE, EditMode, CTX_INLINE_CHAT_DOCUMENT_CHANGED, CTX_INLINE_CHAT_DID_EDIT, CTX_INLINE_CHAT_HAS_STASHED_SESSION, ACTION_ACCEPT_CHANGES, ACTION_REGENERATE_RESPONSE, CTX_INLINE_CHAT_RESPONSE_TYPES, InlineChatResponseTypes, ACTION_VIEW_IN_CHAT, CTX_INLINE_CHAT_USER_DID_EDIT, CTX_INLINE_CHAT_RESPONSE_FOCUSED, CTX_INLINE_CHAT_SUPPORT_ISSUE_REPORTING, InlineChatResponseFeedbackKind, CTX_INLINE_CHAT_CHANGE_SHOWS_DIFF, CTX_INLINE_CHAT_CHANGE_HAS_DIFF, MENU_INLINE_CHAT_WIDGET, ACTION_TOGGLE_DIFF } from 'vs/workbench/contrib/inlineChat/common/inlineChat';
|
||||||
import { localize, localize2 } from 'vs/nls';
|
import { localize, localize2 } from 'vs/nls';
|
||||||
import { Action2, IAction2Options, MenuId, MenuRegistry } from 'vs/platform/actions/common/actions';
|
import { Action2, IAction2Options, MenuId, MenuRegistry } from 'vs/platform/actions/common/actions';
|
||||||
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
|
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
|
||||||
|
@ -430,8 +430,6 @@ export class ToggleDiffForChange extends AbstractInlineChatAction {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export class ReportIssueForBugCommand extends AbstractInlineChatAction {
|
export class ReportIssueForBugCommand extends AbstractInlineChatAction {
|
||||||
constructor() {
|
constructor() {
|
||||||
super({
|
super({
|
||||||
|
@ -440,10 +438,10 @@ export class ReportIssueForBugCommand extends AbstractInlineChatAction {
|
||||||
icon: Codicon.report,
|
icon: Codicon.report,
|
||||||
precondition: ContextKeyExpr.and(CTX_INLINE_CHAT_VISIBLE, CTX_INLINE_CHAT_RESPONSE_TYPES.notEqualsTo(InlineChatResponseTypes.Empty)),
|
precondition: ContextKeyExpr.and(CTX_INLINE_CHAT_VISIBLE, CTX_INLINE_CHAT_RESPONSE_TYPES.notEqualsTo(InlineChatResponseTypes.Empty)),
|
||||||
menu: [{
|
menu: [{
|
||||||
id: MENU_INLINE_CHAT_WIDGET_FEEDBACK,
|
id: MENU_INLINE_CHAT_WIDGET,
|
||||||
when: ContextKeyExpr.and(CTX_INLINE_CHAT_SUPPORT_ISSUE_REPORTING, CTX_INLINE_CHAT_RESPONSE_TYPES.notEqualsTo(InlineChatResponseTypes.Empty)),
|
when: ContextKeyExpr.and(CTX_INLINE_CHAT_SUPPORT_ISSUE_REPORTING, CTX_INLINE_CHAT_RESPONSE_TYPES.notEqualsTo(InlineChatResponseTypes.Empty)),
|
||||||
group: '2_feedback',
|
group: 'navigation',
|
||||||
order: 3
|
order: 2
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,7 @@ export interface IInlineChatWidgetConstructionOptions {
|
||||||
/**
|
/**
|
||||||
* The men that rendered in the lower right corner, use for feedback
|
* The men that rendered in the lower right corner, use for feedback
|
||||||
*/
|
*/
|
||||||
feedbackMenuId: MenuId;
|
feedbackMenuId?: MenuId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated
|
* @deprecated
|
||||||
|
@ -157,19 +157,6 @@ export class InlineChatWidget {
|
||||||
@ITextModelService protected readonly _textModelResolverService: ITextModelService,
|
@ITextModelService protected readonly _textModelResolverService: ITextModelService,
|
||||||
@IChatService private readonly _chatService: IChatService,
|
@IChatService private readonly _chatService: IChatService,
|
||||||
) {
|
) {
|
||||||
// Share hover delegates between toolbars to support instant hover between both
|
|
||||||
// TODO@jrieken move into chat widget
|
|
||||||
// const hoverDelegate = this._store.add(createInstantHoverDelegate());
|
|
||||||
|
|
||||||
this._store.add(this._configurationService.onDidChangeConfiguration(e => {
|
|
||||||
if (e.affectsConfiguration(AccessibilityVerbositySettingId.InlineChat)) {
|
|
||||||
this._updateAriaLabel();
|
|
||||||
// TODO@jrieken FIX THIS
|
|
||||||
// this._chatWidget.ariaLabel = this._accessibleViewService.getOpenAriaHint(AccessibilityVerbositySettingId.InlineChat);
|
|
||||||
this._elements.followUps.ariaLabel = this._accessibleViewService.getOpenAriaHint(AccessibilityVerbositySettingId.InlineChat);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
// toolbars
|
// toolbars
|
||||||
this._progressBar = new ProgressBar(this._elements.progress);
|
this._progressBar = new ProgressBar(this._elements.progress);
|
||||||
this._store.add(this._progressBar);
|
this._store.add(this._progressBar);
|
||||||
|
@ -290,14 +277,22 @@ export class InlineChatWidget {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const feedbackToolbar = this._instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.feedbackToolbar, options.feedbackMenuId, { ...workbenchToolbarOptions, hiddenItemStrategy: HiddenItemStrategy.Ignore });
|
if (options.feedbackMenuId) {
|
||||||
this._store.add(feedbackToolbar.onDidChangeMenuItems(() => this._onDidChangeHeight.fire()));
|
const feedbackToolbar = this._instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.feedbackToolbar, options.feedbackMenuId, { ...workbenchToolbarOptions, hiddenItemStrategy: HiddenItemStrategy.Ignore });
|
||||||
this._store.add(feedbackToolbar);
|
this._store.add(feedbackToolbar.onDidChangeMenuItems(() => this._onDidChangeHeight.fire()));
|
||||||
|
this._store.add(feedbackToolbar);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._store.add(this._configurationService.onDidChangeConfiguration(e => {
|
||||||
|
if (e.affectsConfiguration(AccessibilityVerbositySettingId.InlineChat)) {
|
||||||
|
this._updateAriaLabel();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._elements.root.tabIndex = 0;
|
||||||
this._elements.followUps.tabIndex = 0;
|
this._elements.followUps.tabIndex = 0;
|
||||||
this._elements.followUps.ariaLabel = this._accessibleViewService.getOpenAriaHint(AccessibilityVerbositySettingId.InlineChat);
|
|
||||||
this._elements.statusLabel.tabIndex = 0;
|
this._elements.statusLabel.tabIndex = 0;
|
||||||
|
this._updateAriaLabel();
|
||||||
|
|
||||||
// this._elements.status
|
// this._elements.status
|
||||||
this._store.add(setupCustomHover(getDefaultHoverDelegate('element'), this._elements.statusLabel, () => {
|
this._store.add(setupCustomHover(getDefaultHoverDelegate('element'), this._elements.statusLabel, () => {
|
||||||
|
@ -319,15 +314,19 @@ export class InlineChatWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
private _updateAriaLabel(): void {
|
private _updateAriaLabel(): void {
|
||||||
if (!this._accessibilityService.isScreenReaderOptimized()) {
|
|
||||||
return;
|
this._elements.root.ariaLabel = this._accessibleViewService.getOpenAriaHint(AccessibilityVerbositySettingId.InlineChat);
|
||||||
|
|
||||||
|
if (this._accessibilityService.isScreenReaderOptimized()) {
|
||||||
|
let label = defaultAriaLabel;
|
||||||
|
if (this._configurationService.getValue<boolean>(AccessibilityVerbositySettingId.InlineChat)) {
|
||||||
|
const kbLabel = this._keybindingService.lookupKeybinding(AccessibilityCommandId.OpenAccessibilityHelp)?.getLabel();
|
||||||
|
label = kbLabel
|
||||||
|
? localize('inlineChat.accessibilityHelp', "Inline Chat Input, Use {0} for Inline Chat Accessibility Help.", kbLabel)
|
||||||
|
: localize('inlineChat.accessibilityHelpNoKb', "Inline Chat Input, Run the Inline Chat Accessibility Help command for more information.");
|
||||||
|
}
|
||||||
|
this._chatWidget.inputEditor.updateOptions({ ariaLabel: label });
|
||||||
}
|
}
|
||||||
let label = defaultAriaLabel;
|
|
||||||
if (this._configurationService.getValue<boolean>(AccessibilityVerbositySettingId.InlineChat)) {
|
|
||||||
const kbLabel = this._keybindingService.lookupKeybinding(AccessibilityCommandId.OpenAccessibilityHelp)?.getLabel();
|
|
||||||
label = kbLabel ? localize('inlineChat.accessibilityHelp', "Inline Chat Input, Use {0} for Inline Chat Accessibility Help.", kbLabel) : localize('inlineChat.accessibilityHelpNoKb', "Inline Chat Input, Run the Inline Chat Accessibility Help command for more information.");
|
|
||||||
}
|
|
||||||
this._chatWidget.inputEditor.updateOptions({ ariaLabel: label });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dispose(): void {
|
dispose(): void {
|
||||||
|
@ -526,7 +525,9 @@ export class InlineChatWidget {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @deprecated use `setChatModel` instead
|
||||||
|
*/
|
||||||
updateFollowUps(items: IInlineChatFollowup[], onFollowup: (followup: IInlineChatFollowup) => void): void;
|
updateFollowUps(items: IInlineChatFollowup[], onFollowup: (followup: IInlineChatFollowup) => void): void;
|
||||||
updateFollowUps(items: undefined): void;
|
updateFollowUps(items: undefined): void;
|
||||||
updateFollowUps(items: IInlineChatFollowup[] | undefined, onFollowup?: ((followup: IInlineChatFollowup) => void)) {
|
updateFollowUps(items: IInlineChatFollowup[] | undefined, onFollowup?: ((followup: IInlineChatFollowup) => void)) {
|
||||||
|
@ -540,10 +541,11 @@ export class InlineChatWidget {
|
||||||
this._onDidChangeHeight.fire();
|
this._onDidChangeHeight.fire();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use `setChatModel` instead
|
||||||
|
*/
|
||||||
updateSlashCommands(commands: IInlineChatSlashCommand[]) {
|
updateSlashCommands(commands: IInlineChatSlashCommand[]) {
|
||||||
// this._inputWidget.updateSlashCommands(commands);
|
|
||||||
// TODO@jrieken
|
|
||||||
}
|
}
|
||||||
|
|
||||||
updateInfo(message: string): void {
|
updateInfo(message: string): void {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
import { Dimension, addDisposableListener } from 'vs/base/browser/dom';
|
import { Dimension } from 'vs/base/browser/dom';
|
||||||
import * as aria from 'vs/base/browser/ui/aria/aria';
|
import * as aria from 'vs/base/browser/ui/aria/aria';
|
||||||
import { toDisposable } from 'vs/base/common/lifecycle';
|
import { toDisposable } from 'vs/base/common/lifecycle';
|
||||||
import { assertType } from 'vs/base/common/types';
|
import { assertType } from 'vs/base/common/types';
|
||||||
|
@ -14,7 +14,7 @@ import { ZoneWidget } from 'vs/editor/contrib/zoneWidget/browser/zoneWidget';
|
||||||
import { localize } from 'vs/nls';
|
import { localize } from 'vs/nls';
|
||||||
import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { ACTION_ACCEPT_CHANGES, ACTION_REGENERATE_RESPONSE, ACTION_TOGGLE_DIFF, ACTION_VIEW_IN_CHAT, CTX_INLINE_CHAT_OUTER_CURSOR_POSITION, MENU_INLINE_CHAT_WIDGET, MENU_INLINE_CHAT_WIDGET_FEEDBACK, MENU_INLINE_CHAT_WIDGET_STATUS } from 'vs/workbench/contrib/inlineChat/common/inlineChat';
|
import { ACTION_ACCEPT_CHANGES, ACTION_REGENERATE_RESPONSE, ACTION_TOGGLE_DIFF, ACTION_VIEW_IN_CHAT, CTX_INLINE_CHAT_OUTER_CURSOR_POSITION, MENU_INLINE_CHAT_WIDGET, MENU_INLINE_CHAT_WIDGET_STATUS } from 'vs/workbench/contrib/inlineChat/common/inlineChat';
|
||||||
import { EditorBasedInlineChatWidget } from './inlineChatWidget';
|
import { EditorBasedInlineChatWidget } from './inlineChatWidget';
|
||||||
import { MenuId } from 'vs/platform/actions/common/actions';
|
import { MenuId } from 'vs/platform/actions/common/actions';
|
||||||
|
|
||||||
|
@ -44,7 +44,6 @@ export class InlineChatZoneWidget extends ZoneWidget {
|
||||||
telemetrySource: 'interactiveEditorWidget-toolbar',
|
telemetrySource: 'interactiveEditorWidget-toolbar',
|
||||||
inputMenuId: MenuId.ChatExecute,
|
inputMenuId: MenuId.ChatExecute,
|
||||||
widgetMenuId: MENU_INLINE_CHAT_WIDGET,
|
widgetMenuId: MENU_INLINE_CHAT_WIDGET,
|
||||||
feedbackMenuId: MENU_INLINE_CHAT_WIDGET_FEEDBACK,
|
|
||||||
statusMenuId: {
|
statusMenuId: {
|
||||||
menu: MENU_INLINE_CHAT_WIDGET_STATUS,
|
menu: MENU_INLINE_CHAT_WIDGET_STATUS,
|
||||||
options: {
|
options: {
|
||||||
|
@ -69,13 +68,6 @@ export class InlineChatZoneWidget extends ZoneWidget {
|
||||||
this._disposables.add(this.widget);
|
this._disposables.add(this.widget);
|
||||||
this.create();
|
this.create();
|
||||||
|
|
||||||
|
|
||||||
this._disposables.add(addDisposableListener(this.domNode, 'click', e => {
|
|
||||||
if (!this.widget.hasFocus()) {
|
|
||||||
this.widget.focus();
|
|
||||||
}
|
|
||||||
}, true));
|
|
||||||
|
|
||||||
// todo@jrieken listen ONLY when showing
|
// todo@jrieken listen ONLY when showing
|
||||||
const updateCursorIsAboveContextKey = () => {
|
const updateCursorIsAboveContextKey = () => {
|
||||||
if (!this.position || !this.editor.hasModel()) {
|
if (!this.position || !this.editor.hasModel()) {
|
||||||
|
|
|
@ -182,7 +182,6 @@ export const ACTION_TOGGLE_DIFF = 'inlineChat.toggleDiff';
|
||||||
|
|
||||||
export const MENU_INLINE_CHAT_WIDGET = MenuId.for('inlineChatWidget');
|
export const MENU_INLINE_CHAT_WIDGET = MenuId.for('inlineChatWidget');
|
||||||
export const MENU_INLINE_CHAT_WIDGET_STATUS = MenuId.for('inlineChatWidget.status');
|
export const MENU_INLINE_CHAT_WIDGET_STATUS = MenuId.for('inlineChatWidget.status');
|
||||||
export const MENU_INLINE_CHAT_WIDGET_FEEDBACK = MenuId.for('inlineChatWidget.feedback');
|
|
||||||
export const MENU_INLINE_CHAT_WIDGET_DISCARD = MenuId.for('inlineChatWidget.undo');
|
export const MENU_INLINE_CHAT_WIDGET_DISCARD = MenuId.for('inlineChatWidget.undo');
|
||||||
|
|
||||||
// --- colors
|
// --- colors
|
||||||
|
|
Loading…
Reference in a new issue