Change:
And instead pass in (or don't) a new option for the type
so the complexity here is that we can't reference the keybinding service within the super call to the constructor and need to do that to provide the options to the find input object that's read only.
the alternative would be to pass in the options from both the terminal view and terminal editor (redundant)
going to pass in an options object and handle the keybinding in simple find widget
Spent awhile on this, don't think we will get to it

Discussion:
padding: 0 10px 10px; } <ins> .simple-find-part .monaco-inputbox > .ibwrapper > input { text-overflow: clip; } </ins> .monaco-workbench .simple-find-part { visibility: hidden;		/* Use visibility to maintain flex layout while hidden otherwise interferes with transition */ z-index: 10;

cursor: pointer; } <del> .monaco-workbench .simple-find-part .button.disabled { opacity: 0.3; </del> <ins> .monaco-workbench div.simple-find-part div.button.disabled { opacity: 0.3 !important; </ins> cursor: default; } <ins> div.simple-find-part-wrapper div.button { border-radius: 5px; } </ins>

import { SimpleButton, findPreviousMatchIcon, findNextMatchIcon, NLS_NO_RESULTS, NLS_MATCHES_LOCATION } from 'vs/editor/contrib/find/browser/findWidget'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; <del> import { editorWidgetBackground, inputActiveOptionBorder, inputActiveOptionBackground, inputActiveOptionForeground, inputBackground, inputBorder, inputForeground, inputValidationErrorBackground, inputValidationErrorBorder, inputValidationErrorForeground, inputValidationInfoBackground, inputValidationInfoBorder, inputValidationInfoForeground, inputValidationWarningBackground, inputValidationWarningBorder, inputValidationWarningForeground, widgetShadow, editorWidgetForeground, errorForeground } from 'vs/platform/theme/common/colorRegistry'; </del> <ins> import { editorWidgetBackground, inputActiveOptionBorder, inputActiveOptionBackground, inputActiveOptionForeground, inputBackground, inputBorder, inputForeground, inputValidationErrorBackground, inputValidationErrorBorder, inputValidationErrorForeground, inputValidationInfoBackground, inputValidationInfoBorder, inputValidationInfoForeground, inputValidationWarningBackground, inputValidationWarningBorder, inputValidationWarningForeground, widgetShadow, editorWidgetForeground, errorForeground, toolbarHoverBackground, toolbarHoverOutline } from 'vs/platform/theme/common/colorRegistry'; </ins> import { IColorTheme, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { ContextScopedFindInput } from 'vs/platform/history/browser/contextScopedHistoryWidget'; import { widgetClose } from 'vs/platform/theme/common/iconRegistry'; import * as strings from 'vs/base/common/strings'; <ins> import { TerminalCommandId } from 'vs/workbench/contrib/terminal/common/terminal'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; </ins> const NLS_FIND_INPUT_LABEL = nls.localize('label.find', "Find"); <del> const NLS_FIND_INPUT_" = nls.localize('placeholder.find', "Find"); </del> <ins> const NLS_FIND_INPUT_" = nls.localize('placeholder.find', "Find (u21C5 for history)"); </ins> const NLS_PREVIOUS_MATCH_BTN_LABEL = nls.localize('label.previousMatchButton', "Previous Match"); const NLS_NEXT_MATCH_BTN_LABEL = nls.localize('label.nextMatchButton', "Next Match"); const NLS_CLOSE_BTN_LABEL = nls.localize('label.closeButton', "Close");

showOptionButtons?: boolean; checkImeCompletionState?: boolean; showResultCount?: boolean; <ins> appendCaseSensitiveLabel?: string; appendRegexLabel?: string; appendWholeWordsLabel?: string; type?: 'Terminal' | 'Webview'; </ins> } export abstract class SimpleFindWidget extends Widget {

@IContextViewService private readonly _contextViewService: IContextViewService, @IContextKeyService contextKeyService: IContextKeyService, private readonly _state: FindReplaceState = new FindReplaceState(), <del> private readonly _options: IFindOptions </del> <ins> private readonly _options: IFindOptions, private readonly _keybindingService?: IKeybindingService </ins> ) { super();

this.updateButtons(this._foundMatch); return { content: e.message }; } <del> } </del> <ins> }, appendCaseSensitiveLabel: _options.appendCaseSensitiveLabel && _options.type === 'Terminal' ? this._getKeybinding(TerminalCommandId.ToggleFindCaseSensitive) : undefined, appendRegexLabel: _options.appendRegexLabel && _options.type === 'Terminal' ? this._getKeybinding(TerminalCommandId.ToggleFindRegex) : undefined, appendWholeWordsLabel: _options.appendWholeWordsLabel && _options.type === 'Terminal' ? this._getKeybinding(TerminalCommandId.ToggleFindWholeWord) : undefined </ins> }, contextKeyService, _options.showOptionButtons)); // Find History with update delayer

this._findInput.style(inputStyles); } <ins> private _getKeybinding(actionId: string): string { let kb = this._keybindingService?.lookupKeybinding(actionId); if (!kb) { return ''; } return ` (${kb.getLabel()})`; } </ins> override dispose() { super.dispose();

if (error) { collector.addRule(`.no-results.matchesCount { color: ${error}; }`); } <ins> const toolbarHoverBackgroundColor = theme.getColor(toolbarHoverBackground); if (toolbarHoverBackgroundColor) { collector.addRule(` div.simple-find-part-wrapper div.button:hover:not(.disabled) { background-color: ${toolbarHoverBackgroundColor}; } `); } const toolbarHoverOutlineColor = theme.getColor(toolbarHoverOutline); if (toolbarHoverOutlineColor) { collector.addRule(` div.simple-find-part-wrapper div.button:hover:not(.disabled) { outline: 1px dashed ${toolbarHoverOutlineColor}; outline-offset: -1px; } `); } </ins> });

import { TerminalLocation } from 'vs/platform/terminal/common/terminal'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; <ins> import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; </ins> export class TerminalFindWidget extends SimpleFindWidget { protected _findInputFocused: IContextKey<boolean>;

constructor( findState: FindReplaceState, @IContextViewService _contextViewService: IContextViewService, <ins> @IKeybindingService keybindingService: IKeybindingService, </ins> @IContextKeyService private readonly _contextKeyService: IContextKeyService, @ITerminalService private readonly _terminalService: ITerminalService, @ITerminalGroupService private readonly _terminalGroupService: ITerminalGroupService, @IThemeService private readonly _themeService: IThemeService, @IConfigurationService private readonly _configurationService: IConfigurationService ) { <del> super(_contextViewService, _contextKeyService, findState, { showOptionButtons: true, showResultCount: true }); </del> <ins> super(_contextViewService, _contextKeyService, findState, { showOptionButtons: true, showResultCount: true, type: 'Terminal' }, keybindingService); </ins> this._register(findState.onFindReplaceStateChange(() => { this.show();