Change:
) { super(); <ins> this._defineWidget = this._register(this._instantiationService.createInstance(DefineKeybindingOverlayWidget, this._editor)); </ins> this._register(this._editor.onDidChangeModel(e => this._update())); this._update(); } <del> get keybindingWidgetRenderer(): KeybindingWidgetRenderer | undefined { return this._keybindingWidgetRenderer; } override dispose(): void { this._disposeKeybindingWidgetRenderer(); this._disposeKeybindingDecorationRenderer(); super.dispose(); } </del> private _update(): void { <del> if (!isInterestingEditorModel(this._editor, this._userDataProfileService)) { this._disposeKeybindingWidgetRenderer(); this._disposeKeybindingDecorationRenderer(); return; } // Decorations are shown for the default keybindings.json **and** for the user keybindings.json this._createKeybindingDecorationRenderer(); // The button to define keybindings is shown only for the user keybindings.json if (!this._editor.getOption(EditorOption.readOnly)) { this._createKeybindingWidgetRenderer(); } else { this._disposeKeybindingWidgetRenderer(); } } private _createKeybindingWidgetRenderer(): void { if (!this._keybindingWidgetRenderer) { this._keybindingWidgetRenderer = this._instantiationService.createInstance(KeybindingWidgetRenderer, this._editor); } } private _disposeKeybindingWidgetRenderer(): void { if (this._keybindingWidgetRenderer) { this._keybindingWidgetRenderer.dispose(); this._keybindingWidgetRenderer = undefined; } } private _createKeybindingDecorationRenderer(): void { if (!this._keybindingDecorationRenderer) { this._keybindingDecorationRenderer = this._instantiationService.createInstance(KeybindingEditorDecorationsRenderer, this._editor); } } private _disposeKeybindingDecorationRenderer(): void { if (this._keybindingDecorationRenderer) { this._keybindingDecorationRenderer.dispose(); this._keybindingDecorationRenderer = undefined; } } } export class KeybindingWidgetRenderer extends Disposable { private _launchWidget: FloatingClickWidget; private _defineWidget: DefineKeybindingOverlayWidget; constructor( private _editor: ICodeEditor, @IInstantiationService private readonly _instantiationService: IInstantiationService ) { super(); this._launchWidget = this._register(this._instantiationService.createInstance(FloatingClickWidget, this._editor, NLS_LAUNCH_MESSAGE, DefineKeybindingCommand.ID)); this._register(this._launchWidget.onClick(() => this.showDefineKeybindingWidget())); this._defineWidget = this._register(this._instantiationService.createInstance(DefineKeybindingOverlayWidget, this._editor)); this._launchWidget.render(); </del> <ins> this._keybindingDecorationRenderer.value = isInterestingEditorModel(this._editor, this._userDataProfileService) // Decorations are shown for the default keybindings.json **and** for the user keybindings.json ? this._instantiationService.createInstance(KeybindingEditorDecorationsRenderer, this._editor) : undefined; </ins> } showDefineKeybindingWidget(): void { <del> this._defineWidget.start().then(keybinding => this._onAccepted(keybinding)); </del> <ins> if (isInterestingEditorModel(this._editor, this._userDataProfileService)) { this._defineWidget.start().then(keybinding => this._onAccepted(keybinding)); } </ins> } private _onAccepted(keybinding: string | null): void {

Discussion:
With there is a new -menu which a big blue buttons. This is used in the merge editor and to hint to open the merge editor. This new menu should be used for: [x] [ ] ~~ / [x] [ ]
Other potential adoptors [ ] [ ] [ ] [ ]
Digging into it, I don't think can be adopted for the diff editor, as the button should be for both editors, not only the right side ( is a , but is ).