remove ExpTextButtons setting and logic but keep make buttons more dynamic (#225495)

This commit is contained in:
Johannes Rieken
2024-08-13 16:00:26 +02:00
committed by GitHub
parent 13b138216d
commit 3218292d9d
9 changed files with 29 additions and 144 deletions

View File

@@ -4,10 +4,10 @@
*--------------------------------------------------------------------------------------------*/
import { EditorContributionInstantiation, registerEditorContribution } from 'vs/editor/browser/editorExtensions';
import { IMenuItem, isIMenuItem, MenuId, MenuRegistry, registerAction2 } from 'vs/platform/actions/common/actions';
import { IMenuItem, MenuRegistry, registerAction2 } from 'vs/platform/actions/common/actions';
import { InlineChatController } from 'vs/workbench/contrib/inlineChat/browser/inlineChatController';
import * as InlineChatActions from 'vs/workbench/contrib/inlineChat/browser/inlineChatActions';
import { CTX_INLINE_CHAT_CONFIG_TXT_BTNS, CTX_INLINE_CHAT_REQUEST_IN_PROGRESS, INLINE_CHAT_ID, InlineChatConfigKeys, MENU_INLINE_CHAT_CONTENT_STATUS, MENU_INLINE_CHAT_EXECUTE, MENU_INLINE_CHAT_WIDGET_STATUS } from 'vs/workbench/contrib/inlineChat/common/inlineChat';
import { CTX_INLINE_CHAT_REQUEST_IN_PROGRESS, INLINE_CHAT_ID, MENU_INLINE_CHAT_CONTENT_STATUS, MENU_INLINE_CHAT_WIDGET_STATUS } from 'vs/workbench/contrib/inlineChat/common/inlineChat';
import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { Registry } from 'vs/platform/registry/common/platform';
import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle';
@@ -23,8 +23,6 @@ import { CancelAction, SubmitAction } from 'vs/workbench/contrib/chat/browser/ac
import { localize } from 'vs/nls';
import { CONTEXT_CHAT_INPUT_HAS_TEXT } from 'vs/workbench/contrib/chat/common/chatContextKeys';
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { InlineChatAccessibilityHelp } from 'vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp';
import { InlineChatExansionContextKey, InlineChatExpandLineAction } from 'vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine';
@@ -51,7 +49,6 @@ const sendActionMenuItem: IMenuItem = {
when: ContextKeyExpr.and(
CONTEXT_CHAT_INPUT_HAS_TEXT,
CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),
CTX_INLINE_CHAT_CONFIG_TXT_BTNS
),
};
@@ -101,47 +98,3 @@ workbenchContributionsRegistry.registerWorkbenchContribution(InlineChatNotebookC
registerWorkbenchContribution2(InlineChatEnabler.Id, InlineChatEnabler, WorkbenchPhase.AfterRestored);
AccessibleViewRegistry.register(new InlineChatAccessibleView());
AccessibleViewRegistry.register(new InlineChatAccessibilityHelp());
// MARK - Menu Copier
// menu copier that we use for text-button mode.
// When active it filters out the send and cancel actions from the chat menu
class MenuCopier implements IDisposable {
static Id = 'inlineChat.menuCopier';
readonly dispose: () => void;
constructor(@IConfigurationService configService: IConfigurationService,) {
const store = new DisposableStore();
function updateMenu() {
store.clear();
for (const item of MenuRegistry.getMenuItems(MenuId.ChatExecute)) {
if (configService.getValue<boolean>(InlineChatConfigKeys.ExpTextButtons) && isIMenuItem(item) && (item.command.id === SubmitAction.ID || item.command.id === CancelAction.ID)) {
continue;
}
store.add(MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_EXECUTE, item));
}
}
updateMenu();
const listener = MenuRegistry.onDidChangeMenu(e => {
if (e.has(MenuId.ChatExecute)) {
updateMenu();
}
});
const listener2 = configService.onDidChangeConfiguration(e => {
if (e.affectsConfiguration(InlineChatConfigKeys.ExpTextButtons)) {
updateMenu();
}
});
this.dispose = () => {
listener.dispose();
listener2.dispose();
store.dispose();
};
}
}
registerWorkbenchContribution2(MenuCopier.Id, MenuCopier, WorkbenchPhase.AfterRestored);