From bc479fb8089556f7ca60a4d4953e402fcfbe6cae Mon Sep 17 00:00:00 2001 From: Laurent Nguyen Date: Fri, 2 Aug 2024 17:53:00 +0200 Subject: [PATCH] Add Word Wrap menu option to Editor React monaco context menu in Documents Tab (#1922) * Remove "Go to Symbol..." menu option by default in monaco. Add option to toggle word wrap. * Remove code that removes "Go to symbol" as it is not a public API * Move WordWrap context menu item to its own section. Remove unnecessary parameters. * Fix format --- src/Explorer/Controls/Editor/EditorReact.tsx | 31 +++++++++++++++++-- .../Tabs/DocumentsTabV2/DocumentsTabV2.tsx | 1 + 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/Explorer/Controls/Editor/EditorReact.tsx b/src/Explorer/Controls/Editor/EditorReact.tsx index f2274d7dc..ebc91c68d 100644 --- a/src/Explorer/Controls/Editor/EditorReact.tsx +++ b/src/Explorer/Controls/Editor/EditorReact.tsx @@ -24,13 +24,19 @@ export interface EditorReactProps { monacoContainerStyles?: React.CSSProperties; className?: string; spinnerClassName?: string; + + enableWordWrapContextMenuItem?: boolean; // Enable/Disable "Word Wrap" context menu item + onWordWrapChanged?: (wordWrap: "on" | "off") => void; // Called when word wrap is changed } export class EditorReact extends React.Component { + private static readonly VIEWING_OPTIONS_GROUP_ID = "viewingoptions"; // Group ID for the context menu group private rootNode: HTMLElement; private editor: monaco.editor.IStandaloneCodeEditor; private selectionListener: monaco.IDisposable; + private monacoEditorOptionsWordWrap: monaco.editor.EditorOption; + public constructor(props: EditorReactProps) { super(props); this.state = { @@ -113,6 +119,23 @@ export class EditorReact extends React.Component { + const newOption = ed.getOption(this.monacoEditorOptionsWordWrap) === "on" ? "off" : "on"; + ed.updateOptions({ wordWrap: newOption }); + this.props.onWordWrapChanged(newOption); + }, + }); + } } /** @@ -136,9 +159,13 @@ export class EditorReact extends React.Component )} {selectedRows.size > 1 && (