limit editor contribs in notebook diff view
This commit is contained in:
parent
31d11a3729
commit
4fefd1030a
7 changed files with 53 additions and 17 deletions
|
@ -18,7 +18,7 @@ import { Configuration } from 'vs/editor/browser/config/configuration';
|
|||
import { StableEditorScrollState } from 'vs/editor/browser/core/editorState';
|
||||
import * as editorBrowser from 'vs/editor/browser/editorBrowser';
|
||||
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
|
||||
import { CodeEditorWidget } from 'vs/editor/browser/widget/codeEditorWidget';
|
||||
import { CodeEditorWidget, ICodeEditorWidgetOptions } from 'vs/editor/browser/widget/codeEditorWidget';
|
||||
import { DiffReview } from 'vs/editor/browser/widget/diffReview';
|
||||
import { IDiffEditorOptions, EditorLayoutInfo, EditorOption, EditorOptions, EditorFontLigatures } from 'vs/editor/common/config/editorOptions';
|
||||
import { IPosition, Position } from 'vs/editor/common/core/position';
|
||||
|
@ -53,6 +53,11 @@ import { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from 'vs/base/browser/ui/mouseCursor
|
|||
import { IViewLineTokens } from 'vs/editor/common/core/lineTokens';
|
||||
import { FontInfo } from 'vs/editor/common/config/fontInfo';
|
||||
|
||||
export interface IDiffCodeEditorWidgetOptions {
|
||||
originalEditor?: ICodeEditorWidgetOptions;
|
||||
modifiedEditor?: ICodeEditorWidgetOptions;
|
||||
}
|
||||
|
||||
interface IEditorDiffDecorations {
|
||||
decorations: IModelDeltaDecoration[];
|
||||
overviewZones: OverviewRulerZone[];
|
||||
|
@ -228,6 +233,7 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE
|
|||
constructor(
|
||||
domElement: HTMLElement,
|
||||
options: editorBrowser.IDiffEditorConstructionOptions,
|
||||
codeEditorWidgetOptions: IDiffCodeEditorWidgetOptions,
|
||||
@IClipboardService clipboardService: IClipboardService,
|
||||
@IEditorWorkerService editorWorkerService: IEditorWorkerService,
|
||||
@IContextKeyService contextKeyService: IContextKeyService,
|
||||
|
@ -373,8 +379,8 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE
|
|||
rightServices.set(IContextKeyService, rightContextKeyService);
|
||||
const rightScopedInstantiationService = instantiationService.createChild(rightServices);
|
||||
|
||||
this._originalEditor = this._createLeftHandSideEditor(options, leftScopedInstantiationService, leftContextKeyService);
|
||||
this._modifiedEditor = this._createRightHandSideEditor(options, rightScopedInstantiationService, rightContextKeyService);
|
||||
this._originalEditor = this._createLeftHandSideEditor(options, codeEditorWidgetOptions.originalEditor || {}, leftScopedInstantiationService, leftContextKeyService);
|
||||
this._modifiedEditor = this._createRightHandSideEditor(options, codeEditorWidgetOptions.modifiedEditor || {}, rightScopedInstantiationService, rightContextKeyService);
|
||||
|
||||
this._originalOverviewRuler = null;
|
||||
this._modifiedOverviewRuler = null;
|
||||
|
@ -502,8 +508,8 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE
|
|||
this._layoutOverviewRulers();
|
||||
}
|
||||
|
||||
private _createLeftHandSideEditor(options: editorBrowser.IDiffEditorConstructionOptions, instantiationService: IInstantiationService, contextKeyService: IContextKeyService): CodeEditorWidget {
|
||||
const editor = this._createInnerEditor(instantiationService, this._originalDomNode, this._adjustOptionsForLeftHandSide(options, this._originalIsEditable, this._originalCodeLens));
|
||||
private _createLeftHandSideEditor(options: editorBrowser.IDiffEditorConstructionOptions, codeEditorWidgetOptions: ICodeEditorWidgetOptions, instantiationService: IInstantiationService, contextKeyService: IContextKeyService): CodeEditorWidget {
|
||||
const editor = this._createInnerEditor(instantiationService, this._originalDomNode, this._adjustOptionsForLeftHandSide(options, this._originalIsEditable, this._originalCodeLens), codeEditorWidgetOptions);
|
||||
|
||||
this._register(editor.onDidScrollChange((e) => {
|
||||
if (this._isHandlingScrollEvent) {
|
||||
|
@ -560,8 +566,8 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE
|
|||
return editor;
|
||||
}
|
||||
|
||||
private _createRightHandSideEditor(options: editorBrowser.IDiffEditorConstructionOptions, instantiationService: IInstantiationService, contextKeyService: IContextKeyService): CodeEditorWidget {
|
||||
const editor = this._createInnerEditor(instantiationService, this._modifiedDomNode, this._adjustOptionsForRightHandSide(options, this._modifiedCodeLens));
|
||||
private _createRightHandSideEditor(options: editorBrowser.IDiffEditorConstructionOptions, codeEditorWidgetOptions: ICodeEditorWidgetOptions, instantiationService: IInstantiationService, contextKeyService: IContextKeyService): CodeEditorWidget {
|
||||
const editor = this._createInnerEditor(instantiationService, this._modifiedDomNode, this._adjustOptionsForRightHandSide(options, this._modifiedCodeLens), codeEditorWidgetOptions);
|
||||
|
||||
this._register(editor.onDidScrollChange((e) => {
|
||||
if (this._isHandlingScrollEvent) {
|
||||
|
@ -624,8 +630,8 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE
|
|||
return editor;
|
||||
}
|
||||
|
||||
protected _createInnerEditor(instantiationService: IInstantiationService, container: HTMLElement, options: editorBrowser.IEditorConstructionOptions): CodeEditorWidget {
|
||||
return instantiationService.createInstance(CodeEditorWidget, container, options, {});
|
||||
protected _createInnerEditor(instantiationService: IInstantiationService, container: HTMLElement, options: editorBrowser.IEditorConstructionOptions, editorWidgetOptions: ICodeEditorWidgetOptions): CodeEditorWidget {
|
||||
return instantiationService.createInstance(CodeEditorWidget, container, options, editorWidgetOptions);
|
||||
}
|
||||
|
||||
public dispose(): void {
|
||||
|
|
|
@ -82,7 +82,7 @@ export class EmbeddedDiffEditorWidget extends DiffEditorWidget {
|
|||
@IClipboardService clipboardService: IClipboardService,
|
||||
@IEditorProgressService editorProgressService: IEditorProgressService,
|
||||
) {
|
||||
super(domElement, parentEditor.getRawOptions(), clipboardService, editorWorkerService, contextKeyService, instantiationService, codeEditorService, themeService, notificationService, contextMenuService, editorProgressService);
|
||||
super(domElement, parentEditor.getRawOptions(), {}, clipboardService, editorWorkerService, contextKeyService, instantiationService, codeEditorService, themeService, notificationService, contextMenuService, editorProgressService);
|
||||
|
||||
this._parentEditor = parentEditor;
|
||||
this._overwriteOptions = options;
|
||||
|
|
|
@ -455,7 +455,7 @@ export class StandaloneDiffEditor extends DiffEditorWidget implements IStandalon
|
|||
options.theme = themeService.setTheme(options.theme);
|
||||
}
|
||||
|
||||
super(domElement, options, clipboardService, editorWorkerService, contextKeyService, instantiationService, codeEditorService, themeService, notificationService, contextMenuService, editorProgressService);
|
||||
super(domElement, options, {}, clipboardService, editorWorkerService, contextKeyService, instantiationService, codeEditorService, themeService, notificationService, contextMenuService, editorProgressService);
|
||||
|
||||
this._contextViewService = <ContextViewService>contextViewService;
|
||||
this._configurationService = configurationService;
|
||||
|
|
|
@ -84,7 +84,7 @@ export class TextDiffEditor extends BaseTextEditor implements ITextDiffEditorPan
|
|||
}
|
||||
|
||||
createEditorControl(parent: HTMLElement, configuration: ICodeEditorOptions): IDiffEditor {
|
||||
return this.instantiationService.createInstance(DiffEditorWidget, parent, configuration);
|
||||
return this.instantiationService.createInstance(DiffEditorWidget, parent, configuration, {});
|
||||
}
|
||||
|
||||
async setInput(input: EditorInput, options: EditorOptions | undefined, context: IEditorOpenContext, token: CancellationToken): Promise<void> {
|
||||
|
|
|
@ -37,7 +37,7 @@ import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService
|
|||
|
||||
const CONTEXT_ACCESSIBILITY_WIDGET_VISIBLE = new RawContextKey<boolean>('accessibilityHelpWidgetVisible', false);
|
||||
|
||||
class AccessibilityHelpController extends Disposable implements IEditorContribution {
|
||||
export class AccessibilityHelpController extends Disposable implements IEditorContribution {
|
||||
|
||||
public static readonly ID = 'editor.contrib.accessibilityHelpController';
|
||||
|
||||
|
|
|
@ -38,13 +38,15 @@ const fixedEditorOptions: IEditorOptions = {
|
|||
scrollbar: {
|
||||
verticalScrollbarSize: 14,
|
||||
horizontal: 'auto',
|
||||
vertical: 'hidden',
|
||||
useShadows: true,
|
||||
verticalHasArrows: false,
|
||||
horizontalHasArrows: false,
|
||||
alwaysConsumeMouseWheel: false
|
||||
alwaysConsumeMouseWheel: false,
|
||||
},
|
||||
renderLineHighlightOnlyWhenFocus: true,
|
||||
overviewRulerLanes: 0,
|
||||
overviewRulerBorder: false,
|
||||
selectOnLineNumbers: false,
|
||||
wordWrap: 'off',
|
||||
lineNumbers: 'off',
|
||||
|
@ -434,7 +436,7 @@ abstract class AbstractCellRenderer extends Disposable {
|
|||
height: 0,
|
||||
width: 0
|
||||
}
|
||||
});
|
||||
}, {});
|
||||
|
||||
this._metadataEditorContainer?.classList.add('diff');
|
||||
|
||||
|
@ -543,7 +545,7 @@ abstract class AbstractCellRenderer extends Disposable {
|
|||
height: 0,
|
||||
width: 0
|
||||
}
|
||||
});
|
||||
}, {});
|
||||
|
||||
this._outputEditorContainer?.classList.add('diff');
|
||||
|
||||
|
@ -1108,6 +1110,7 @@ export class ModifiedCell extends AbstractCellRenderer {
|
|||
};
|
||||
|
||||
this._menu = this.menuService.createMenu(MenuId.NotebookDiffCellInputTitle, this.contextKeyService);
|
||||
this._register(this._menu);
|
||||
const actions: IAction[] = [];
|
||||
createAndFillInActionBarActions(this._menu, { shouldForwardArgs: true }, actions);
|
||||
this._toolbar.setActions(actions);
|
||||
|
|
|
@ -18,7 +18,7 @@ import { CellDiffViewModel } from 'vs/workbench/contrib/notebook/browser/diff/ce
|
|||
import { CellDiffSideBySideRenderTemplate, CellDiffSingleSideRenderTemplate, DIFF_CELL_MARGIN, INotebookTextDiffEditor } from 'vs/workbench/contrib/notebook/browser/diff/common';
|
||||
import { isMacintosh } from 'vs/base/common/platform';
|
||||
import { DeletedCell, InsertCell, ModifiedCell } from 'vs/workbench/contrib/notebook/browser/diff/cellComponents';
|
||||
import { CodeEditorWidget } from 'vs/editor/browser/widget/codeEditorWidget';
|
||||
import { CodeEditorWidget, ICodeEditorWidgetOptions } from 'vs/editor/browser/widget/codeEditorWidget';
|
||||
import { IDiffEditorOptions, IEditorOptions } from 'vs/editor/common/config/editorOptions';
|
||||
import { DiffEditorWidget } from 'vs/editor/browser/widget/diffEditorWidget';
|
||||
import { ToolBar } from 'vs/base/browser/ui/toolbar/toolbar';
|
||||
|
@ -26,6 +26,14 @@ import { IMenuService, MenuItemAction } from 'vs/platform/actions/common/actions
|
|||
import { CodiconActionViewItem } from 'vs/workbench/contrib/notebook/browser/view/renderers/commonViewComponents';
|
||||
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
|
||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
||||
import { EditorExtensionsRegistry } from 'vs/editor/browser/editorExtensions';
|
||||
import { ContextMenuController } from 'vs/editor/contrib/contextmenu/contextmenu';
|
||||
import { SnippetController2 } from 'vs/editor/contrib/snippet/snippetController2';
|
||||
import { SuggestController } from 'vs/editor/contrib/suggest/suggestController';
|
||||
import { MenuPreventer } from 'vs/workbench/contrib/codeEditor/browser/menuPreventer';
|
||||
import { SelectionClipboardContributionID } from 'vs/workbench/contrib/codeEditor/browser/selectionClipboard';
|
||||
import { TabCompletionController } from 'vs/workbench/contrib/snippets/browser/tabCompletion';
|
||||
import { AccessibilityHelpController } from 'vs/workbench/contrib/codeEditor/browser/accessibility/accessibility';
|
||||
|
||||
const fixedEditorOptions: IEditorOptions = {
|
||||
padding: {
|
||||
|
@ -65,6 +73,21 @@ const fixedDiffEditorOptions: IDiffEditorOptions = {
|
|||
renderOverviewRuler: false
|
||||
};
|
||||
|
||||
export function getOptimizedNestedCodeEditorWidgetOptions(): ICodeEditorWidgetOptions {
|
||||
return {
|
||||
isSimpleWidget: false,
|
||||
contributions: EditorExtensionsRegistry.getSomeEditorContributions([
|
||||
MenuPreventer.ID,
|
||||
SelectionClipboardContributionID,
|
||||
ContextMenuController.ID,
|
||||
SuggestController.ID,
|
||||
SnippetController2.ID,
|
||||
TabCompletionController.ID,
|
||||
AccessibilityHelpController.ID
|
||||
])
|
||||
};
|
||||
}
|
||||
|
||||
export class NotebookCellTextDiffListDelegate implements IListVirtualDelegate<CellDiffViewModel> {
|
||||
// private readonly lineHeight: number;
|
||||
|
||||
|
@ -147,6 +170,7 @@ export class CellDiffSingleSideRenderer implements IListRenderer<CellDiffViewMod
|
|||
width: (this.notebookEditor.getLayoutInfo().width - 2 * DIFF_CELL_MARGIN) / 2 - 18,
|
||||
height: 0
|
||||
},
|
||||
automaticLayout: false,
|
||||
overflowWidgetsDomNode: this.notebookEditor.getOverflowContainerDomNode()
|
||||
}, {});
|
||||
|
||||
|
@ -251,6 +275,9 @@ export class CellDiffSideBySideRenderer implements IListRenderer<CellDiffViewMod
|
|||
height: 0,
|
||||
width: 0
|
||||
}
|
||||
}, {
|
||||
originalEditor: getOptimizedNestedCodeEditorWidgetOptions(),
|
||||
modifiedEditor: getOptimizedNestedCodeEditorWidgetOptions()
|
||||
});
|
||||
|
||||
return {
|
||||
|
|
Loading…
Reference in a new issue