monaco-editor-core 0.55.0-dev-20251107 → 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/common/config/editorOptions.ts"],"names":[],"mappings":"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","file":"editorOptions.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as arrays from '../../../base/common/arrays.js';\nimport { IMarkdownString } from '../../../base/common/htmlContent.js';\nimport { IJSONSchema } from '../../../base/common/jsonSchema.js';\nimport * as objects from '../../../base/common/objects.js';\nimport * as platform from '../../../base/common/platform.js';\nimport { ScrollbarVisibility } from '../../../base/common/scrollable.js';\nimport { Constants } from '../../../base/common/uint.js';\nimport { EDITOR_FONT_DEFAULTS, FONT_VARIATION_OFF, FONT_VARIATION_TRANSLATE, FontInfo } from './fontInfo.js';\nimport { EDITOR_MODEL_DEFAULTS } from '../core/misc/textModelDefaults.js';\nimport { USUAL_WORD_SEPARATORS } from '../core/wordHelper.js';\nimport * as nls from '../../../nls.js';\nimport { AccessibilitySupport } from '../../../platform/accessibility/common/accessibility.js';\nimport { IConfigurationPropertySchema } from '../../../platform/configuration/common/configurationRegistry.js';\n\n//#region typed options\n\n/**\n * Configuration options for auto closing quotes and brackets\n */\nexport type EditorAutoClosingStrategy = 'always' | 'languageDefined' | 'beforeWhitespace' | 'never';\n\n/**\n * Configuration options for auto wrapping quotes and brackets\n */\nexport type EditorAutoSurroundStrategy = 'languageDefined' | 'quotes' | 'brackets' | 'never';\n\n/**\n * Configuration options for typing over closing quotes or brackets\n */\nexport type EditorAutoClosingEditStrategy = 'always' | 'auto' | 'never';\n\ntype Unknown<T> = { [K in keyof T]: unknown };\n\n/**\n * Configuration options for auto indentation in the editor\n */\nexport const enum EditorAutoIndentStrategy {\n\tNone = 0,\n\tKeep = 1,\n\tBrackets = 2,\n\tAdvanced = 3,\n\tFull = 4\n}\n\n/**\n * Configuration options for the editor.\n */\nexport interface IEditorOptions {\n\t/**\n\t * This editor is used inside a diff editor.\n\t */\n\tinDiffEditor?: boolean;\n\t/**\n\t * This editor is allowed to use variable line heights.\n\t */\n\tallowVariableLineHeights?: boolean;\n\t/**\n\t * This editor is allowed to use variable font-sizes and font-families\n\t */\n\tallowVariableFonts?: boolean;\n\t/**\n\t * This editor is allowed to use variable font-sizes and font-families in accessibility mode\n\t */\n\tallowVariableFontsInAccessibilityMode?: boolean;\n\t/**\n\t * The aria label for the editor's textarea (when it is focused).\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * Whether the aria-required attribute should be set on the editors textarea.\n\t */\n\tariaRequired?: boolean;\n\t/**\n\t * Control whether a screen reader announces inline suggestion content immediately.\n\t */\n\tscreenReaderAnnounceInlineSuggestion?: boolean;\n\t/**\n\t * The `tabindex` property of the editor's textarea\n\t */\n\ttabIndex?: number;\n\t/**\n\t * Render vertical lines at the specified columns.\n\t * Defaults to empty array.\n\t */\n\trulers?: (number | IRulerOption)[];\n\t/**\n\t * Locales used for segmenting lines into words when doing word related navigations or operations.\n\t *\n\t * Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.).\n\t * Defaults to empty array\n\t */\n\twordSegmenterLocales?: string | string[];\n\t/**\n\t * A string containing the word separators used when doing word navigation.\n\t * Defaults to `~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?\n\t */\n\twordSeparators?: string;\n\t/**\n\t * Enable Linux primary clipboard.\n\t * Defaults to true.\n\t */\n\tselectionClipboard?: boolean;\n\t/**\n\t * Control the rendering of line numbers.\n\t * If it is a function, it will be invoked when rendering a line number and the return value will be rendered.\n\t * Otherwise, if it is a truthy, line numbers will be rendered normally (equivalent of using an identity function).\n\t * Otherwise, line numbers will not be rendered.\n\t * Defaults to `on`.\n\t */\n\tlineNumbers?: LineNumbersType;\n\t/**\n\t * Controls the minimal number of visible leading and trailing lines surrounding the cursor.\n\t * Defaults to 0.\n\t*/\n\tcursorSurroundingLines?: number;\n\t/**\n\t * Controls when `cursorSurroundingLines` should be enforced\n\t * Defaults to `default`, `cursorSurroundingLines` is not enforced when cursor position is changed\n\t * by mouse.\n\t*/\n\tcursorSurroundingLinesStyle?: 'default' | 'all';\n\t/**\n\t * Render last line number when the file ends with a newline.\n\t * Defaults to 'on' for Windows and macOS and 'dimmed' for Linux.\n\t*/\n\trenderFinalNewline?: 'on' | 'off' | 'dimmed';\n\t/**\n\t * Remove unusual line terminators like LINE SEPARATOR (LS), PARAGRAPH SEPARATOR (PS).\n\t * Defaults to 'prompt'.\n\t */\n\tunusualLineTerminators?: 'auto' | 'off' | 'prompt';\n\t/**\n\t * Should the corresponding line be selected when clicking on the line number?\n\t * Defaults to true.\n\t */\n\tselectOnLineNumbers?: boolean;\n\t/**\n\t * Control the width of line numbers, by reserving horizontal space for rendering at least an amount of digits.\n\t * Defaults to 5.\n\t */\n\tlineNumbersMinChars?: number;\n\t/**\n\t * Enable the rendering of the glyph margin.\n\t * Defaults to true in vscode and to false in monaco-editor.\n\t */\n\tglyphMargin?: boolean;\n\t/**\n\t * The width reserved for line decorations (in px).\n\t * Line decorations are placed between line numbers and the editor content.\n\t * You can pass in a string in the format floating point followed by \"ch\". e.g. 1.3ch.\n\t * Defaults to 10.\n\t */\n\tlineDecorationsWidth?: number | string;\n\t/**\n\t * When revealing the cursor, a virtual padding (px) is added to the cursor, turning it into a rectangle.\n\t * This virtual padding ensures that the cursor gets revealed before hitting the edge of the viewport.\n\t * Defaults to 30 (px).\n\t */\n\trevealHorizontalRightPadding?: number;\n\t/**\n\t * Render the editor selection with rounded borders.\n\t * Defaults to true.\n\t */\n\troundedSelection?: boolean;\n\t/**\n\t * Class name to be added to the editor.\n\t */\n\textraEditorClassName?: string;\n\t/**\n\t * Should the editor be read only. See also `domReadOnly`.\n\t * Defaults to false.\n\t */\n\treadOnly?: boolean;\n\t/**\n\t * The message to display when the editor is readonly.\n\t */\n\treadOnlyMessage?: IMarkdownString;\n\t/**\n\t * Should the textarea used for input use the DOM `readonly` attribute.\n\t * Defaults to false.\n\t */\n\tdomReadOnly?: boolean;\n\t/**\n\t * Enable linked editing.\n\t * Defaults to false.\n\t */\n\tlinkedEditing?: boolean;\n\t/**\n\t * deprecated, use linkedEditing instead\n\t */\n\trenameOnType?: boolean;\n\t/**\n\t * Should the editor render validation decorations.\n\t * Defaults to editable.\n\t */\n\trenderValidationDecorations?: 'editable' | 'on' | 'off';\n\t/**\n\t * Control the behavior and rendering of the scrollbars.\n\t */\n\tscrollbar?: IEditorScrollbarOptions;\n\t/**\n\t * Control the behavior of sticky scroll options\n\t */\n\tstickyScroll?: IEditorStickyScrollOptions;\n\t/**\n\t * Control the behavior and rendering of the minimap.\n\t */\n\tminimap?: IEditorMinimapOptions;\n\t/**\n\t * Control the behavior of the find widget.\n\t */\n\tfind?: IEditorFindOptions;\n\t/**\n\t * Display overflow widgets as `fixed`.\n\t * Defaults to `false`.\n\t */\n\tfixedOverflowWidgets?: boolean;\n\t/**\n\t * Allow content widgets and overflow widgets to overflow the editor viewport.\n\t * Defaults to `true`.\n\t */\n\tallowOverflow?: boolean;\n\t/**\n\t * The number of vertical lanes the overview ruler should render.\n\t * Defaults to 3.\n\t */\n\toverviewRulerLanes?: number;\n\t/**\n\t * Controls if a border should be drawn around the overview ruler.\n\t * Defaults to `true`.\n\t */\n\toverviewRulerBorder?: boolean;\n\t/**\n\t * Control the cursor animation style, possible values are 'blink', 'smooth', 'phase', 'expand' and 'solid'.\n\t * Defaults to 'blink'.\n\t */\n\tcursorBlinking?: 'blink' | 'smooth' | 'phase' | 'expand' | 'solid';\n\t/**\n\t * Zoom the font in the editor when using the mouse wheel in combination with holding Ctrl.\n\t * Defaults to false.\n\t */\n\tmouseWheelZoom?: boolean;\n\t/**\n\t * Control the mouse pointer style, either 'text' or 'default' or 'copy'\n\t * Defaults to 'text'\n\t */\n\tmouseStyle?: 'text' | 'default' | 'copy';\n\t/**\n\t * Enable smooth caret animation.\n\t * Defaults to 'off'.\n\t */\n\tcursorSmoothCaretAnimation?: 'off' | 'explicit' | 'on';\n\t/**\n\t * Control the cursor style in insert mode.\n\t * Defaults to 'line'.\n\t */\n\tcursorStyle?: 'line' | 'block' | 'underline' | 'line-thin' | 'block-outline' | 'underline-thin';\n\t/**\n\t * Control the cursor style in overtype mode.\n\t * Defaults to 'block'.\n\t */\n\tovertypeCursorStyle?: 'line' | 'block' | 'underline' | 'line-thin' | 'block-outline' | 'underline-thin';\n\t/**\n\t * Controls whether paste in overtype mode should overwrite or insert.\n\t */\n\tovertypeOnPaste?: boolean;\n\t/**\n\t * Control the width of the cursor when cursorStyle is set to 'line'\n\t */\n\tcursorWidth?: number;\n\t/**\n\t * Control the height of the cursor when cursorStyle is set to 'line'\n\t */\n\tcursorHeight?: number;\n\t/**\n\t * Enable font ligatures.\n\t * Defaults to false.\n\t */\n\tfontLigatures?: boolean | string;\n\t/**\n\t * Enable font variations.\n\t * Defaults to false.\n\t */\n\tfontVariations?: boolean | string;\n\t/**\n\t * Controls whether to use default color decorations or not using the default document color provider\n\t */\n\tdefaultColorDecorators?: 'auto' | 'always' | 'never';\n\t/**\n\t * Disable the use of `transform: translate3d(0px, 0px, 0px)` for the editor margin and lines layers.\n\t * The usage of `transform: translate3d(0px, 0px, 0px)` acts as a hint for browsers to create an extra layer.\n\t * Defaults to false.\n\t */\n\tdisableLayerHinting?: boolean;\n\t/**\n\t * Disable the optimizations for monospace fonts.\n\t * Defaults to false.\n\t */\n\tdisableMonospaceOptimizations?: boolean;\n\t/**\n\t * Should the cursor be hidden in the overview ruler.\n\t * Defaults to false.\n\t */\n\thideCursorInOverviewRuler?: boolean;\n\t/**\n\t * Enable that scrolling can go one screen size after the last line.\n\t * Defaults to true.\n\t */\n\tscrollBeyondLastLine?: boolean;\n\t/**\n\t * Scroll editor on middle click\n\t */\n\tscrollOnMiddleClick?: boolean;\n\t/**\n\t * Enable that scrolling can go beyond the last column by a number of columns.\n\t * Defaults to 5.\n\t */\n\tscrollBeyondLastColumn?: number;\n\t/**\n\t * Enable that the editor animates scrolling to a position.\n\t * Defaults to false.\n\t */\n\tsmoothScrolling?: boolean;\n\t/**\n\t * Enable that the editor will install a ResizeObserver to check if its container dom node size has changed.\n\t * Defaults to false.\n\t */\n\tautomaticLayout?: boolean;\n\t/**\n\t * Control the wrapping of the editor.\n\t * When `wordWrap` = \"off\", the lines will never wrap.\n\t * When `wordWrap` = \"on\", the lines will wrap at the viewport width.\n\t * When `wordWrap` = \"wordWrapColumn\", the lines will wrap at `wordWrapColumn`.\n\t * When `wordWrap` = \"bounded\", the lines will wrap at min(viewport width, wordWrapColumn).\n\t * Defaults to \"off\".\n\t */\n\twordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded';\n\t/**\n\t * Override the `wordWrap` setting.\n\t */\n\twordWrapOverride1?: 'off' | 'on' | 'inherit';\n\t/**\n\t * Override the `wordWrapOverride1` setting.\n\t */\n\twordWrapOverride2?: 'off' | 'on' | 'inherit';\n\t/**\n\t * Control the wrapping of the editor.\n\t * When `wordWrap` = \"off\", the lines will never wrap.\n\t * When `wordWrap` = \"on\", the lines will wrap at the viewport width.\n\t * When `wordWrap` = \"wordWrapColumn\", the lines will wrap at `wordWrapColumn`.\n\t * When `wordWrap` = \"bounded\", the lines will wrap at min(viewport width, wordWrapColumn).\n\t * Defaults to 80.\n\t */\n\twordWrapColumn?: number;\n\t/**\n\t * Control indentation of wrapped lines. Can be: 'none', 'same', 'indent' or 'deepIndent'.\n\t * Defaults to 'same' in vscode and to 'none' in monaco-editor.\n\t */\n\twrappingIndent?: 'none' | 'same' | 'indent' | 'deepIndent';\n\t/**\n\t * Controls the wrapping strategy to use.\n\t * Defaults to 'simple'.\n\t */\n\twrappingStrategy?: 'simple' | 'advanced';\n\t/**\n\t * Create a softwrap on every quoted \"\\n\" literal.\n\t * Defaults to false.\n\t */\n\twrapOnEscapedLineFeeds?: boolean;\n\t/**\n\t * Configure word wrapping characters. A break will be introduced before these characters.\n\t */\n\twordWrapBreakBeforeCharacters?: string;\n\t/**\n\t * Configure word wrapping characters. A break will be introduced after these characters.\n\t */\n\twordWrapBreakAfterCharacters?: string;\n\t/**\n\t * Sets whether line breaks appear wherever the text would otherwise overflow its content box.\n\t * When wordBreak = 'normal', Use the default line break rule.\n\t * When wordBreak = 'keepAll', Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.\n\t */\n\twordBreak?: 'normal' | 'keepAll';\n\t/**\n\t * Performance guard: Stop rendering a line after x characters.\n\t * Defaults to 10000.\n\t * Use -1 to never stop rendering\n\t */\n\tstopRenderingLineAfter?: number;\n\t/**\n\t * Configure the editor's hover.\n\t */\n\thover?: IEditorHoverOptions;\n\t/**\n\t * Enable detecting links and making them clickable.\n\t * Defaults to true.\n\t */\n\tlinks?: boolean;\n\t/**\n\t * Enable inline color decorators and color picker rendering.\n\t */\n\tcolorDecorators?: boolean;\n\t/**\n\t * Controls what is the condition to spawn a color picker from a color dectorator\n\t */\n\tcolorDecoratorsActivatedOn?: 'clickAndHover' | 'click' | 'hover';\n\t/**\n\t * Controls the max number of color decorators that can be rendered in an editor at once.\n\t */\n\tcolorDecoratorsLimit?: number;\n\t/**\n\t * Control the behaviour of comments in the editor.\n\t */\n\tcomments?: IEditorCommentsOptions;\n\t/**\n\t * Enable custom contextmenu.\n\t * Defaults to true.\n\t */\n\tcontextmenu?: boolean;\n\t/**\n\t * A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\n\t * Defaults to 1.\n\t */\n\tmouseWheelScrollSensitivity?: number;\n\t/**\n\t * FastScrolling mulitplier speed when pressing `Alt`\n\t * Defaults to 5.\n\t */\n\tfastScrollSensitivity?: number;\n\t/**\n\t * Enable that the editor scrolls only the predominant axis. Prevents horizontal drift when scrolling vertically on a trackpad.\n\t * Defaults to true.\n\t */\n\tscrollPredominantAxis?: boolean;\n\t/**\n\t * Make scrolling inertial - mostly useful with touchpad on linux.\n\t */\n\tinertialScroll?: boolean;\n\t/**\n\t * Enable that the selection with the mouse and keys is doing column selection.\n\t * Defaults to false.\n\t */\n\tcolumnSelection?: boolean;\n\t/**\n\t * The modifier to be used to add multiple cursors with the mouse.\n\t * Defaults to 'alt'\n\t */\n\tmultiCursorModifier?: 'ctrlCmd' | 'alt';\n\t/**\n\t * Merge overlapping selections.\n\t * Defaults to true\n\t */\n\tmultiCursorMergeOverlapping?: boolean;\n\t/**\n\t * Configure the behaviour when pasting a text with the line count equal to the cursor count.\n\t * Defaults to 'spread'.\n\t */\n\tmultiCursorPaste?: 'spread' | 'full';\n\t/**\n\t * Controls the max number of text cursors that can be in an active editor at once.\n\t */\n\tmultiCursorLimit?: number;\n\t/**\n\t * Enables middle mouse button to open links and Go To Definition\n\t */\n\tmouseMiddleClickAction?: MouseMiddleClickAction;\n\t/**\n\t * Configure the editor's accessibility support.\n\t * Defaults to 'auto'. It is best to leave this to 'auto'.\n\t */\n\taccessibilitySupport?: 'auto' | 'off' | 'on';\n\t/**\n\t * Controls the number of lines in the editor that can be read out by a screen reader\n\t */\n\taccessibilityPageSize?: number;\n\t/**\n\t * Suggest options.\n\t */\n\tsuggest?: ISuggestOptions;\n\tinlineSuggest?: IInlineSuggestOptions;\n\t/**\n\t * Smart select options.\n\t */\n\tsmartSelect?: ISmartSelectOptions;\n\t/**\n\t *\n\t */\n\tgotoLocation?: IGotoLocationOptions;\n\t/**\n\t * Enable quick suggestions (shadow suggestions)\n\t * Defaults to true.\n\t */\n\tquickSuggestions?: boolean | IQuickSuggestionsOptions;\n\t/**\n\t * Quick suggestions show delay (in ms)\n\t * Defaults to 10 (ms)\n\t */\n\tquickSuggestionsDelay?: number;\n\t/**\n\t * Controls the spacing around the editor.\n\t */\n\tpadding?: IEditorPaddingOptions;\n\t/**\n\t * Parameter hint options.\n\t */\n\tparameterHints?: IEditorParameterHintOptions;\n\t/**\n\t * Options for auto closing brackets.\n\t * Defaults to language defined behavior.\n\t */\n\tautoClosingBrackets?: EditorAutoClosingStrategy;\n\t/**\n\t * Options for auto closing comments.\n\t * Defaults to language defined behavior.\n\t */\n\tautoClosingComments?: EditorAutoClosingStrategy;\n\t/**\n\t * Options for auto closing quotes.\n\t * Defaults to language defined behavior.\n\t */\n\tautoClosingQuotes?: EditorAutoClosingStrategy;\n\t/**\n\t * Options for pressing backspace near quotes or bracket pairs.\n\t */\n\tautoClosingDelete?: EditorAutoClosingEditStrategy;\n\t/**\n\t * Options for typing over closing quotes or brackets.\n\t */\n\tautoClosingOvertype?: EditorAutoClosingEditStrategy;\n\t/**\n\t * Options for auto surrounding.\n\t * Defaults to always allowing auto surrounding.\n\t */\n\tautoSurround?: EditorAutoSurroundStrategy;\n\t/**\n\t * Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.\n\t * Defaults to advanced.\n\t */\n\tautoIndent?: 'none' | 'keep' | 'brackets' | 'advanced' | 'full';\n\t/**\n\t * Boolean which controls whether to autoindent on paste\n\t */\n\tautoIndentOnPaste?: boolean;\n\t/**\n\t * Boolean which controls whether to autoindent on paste within a string when autoIndentOnPaste is enabled.\n\t */\n\tautoIndentOnPasteWithinString?: boolean;\n\t/**\n\t * Emulate selection behaviour of tab characters when using spaces for indentation.\n\t * This means selection will stick to tab stops.\n\t */\n\tstickyTabStops?: boolean;\n\t/**\n\t * Enable format on type.\n\t * Defaults to false.\n\t */\n\tformatOnType?: boolean;\n\t/**\n\t * Enable format on paste.\n\t * Defaults to false.\n\t */\n\tformatOnPaste?: boolean;\n\t/**\n\t * Controls if the editor should allow to move selections via drag and drop.\n\t * Defaults to false.\n\t */\n\tdragAndDrop?: boolean;\n\t/**\n\t * Enable the suggestion box to pop-up on trigger characters.\n\t * Defaults to true.\n\t */\n\tsuggestOnTriggerCharacters?: boolean;\n\t/**\n\t * Accept suggestions on ENTER.\n\t * Defaults to 'on'.\n\t */\n\tacceptSuggestionOnEnter?: 'on' | 'smart' | 'off';\n\t/**\n\t * Accept suggestions on provider defined characters.\n\t * Defaults to true.\n\t */\n\tacceptSuggestionOnCommitCharacter?: boolean;\n\t/**\n\t * Enable snippet suggestions. Default to 'true'.\n\t */\n\tsnippetSuggestions?: 'top' | 'bottom' | 'inline' | 'none';\n\t/**\n\t * Copying without a selection copies the current line.\n\t */\n\temptySelectionClipboard?: boolean;\n\t/**\n\t * Syntax highlighting is copied.\n\t */\n\tcopyWithSyntaxHighlighting?: boolean;\n\t/**\n\t * The history mode for suggestions.\n\t */\n\tsuggestSelection?: 'first' | 'recentlyUsed' | 'recentlyUsedByPrefix';\n\t/**\n\t * The font size for the suggest widget.\n\t * Defaults to the editor font size.\n\t */\n\tsuggestFontSize?: number;\n\t/**\n\t * The line height for the suggest widget.\n\t * Defaults to the editor line height.\n\t */\n\tsuggestLineHeight?: number;\n\t/**\n\t * Enable tab completion.\n\t */\n\ttabCompletion?: 'on' | 'off' | 'onlySnippets';\n\t/**\n\t * Enable selection highlight.\n\t * Defaults to true.\n\t */\n\tselectionHighlight?: boolean;\n\t/**\n\t * Enable selection highlight for multiline selections.\n\t * Defaults to false.\n\t */\n\tselectionHighlightMultiline?: boolean;\n\t/**\n\t * Maximum length (in characters) for selection highlights.\n\t * Set to 0 to have an unlimited length.\n\t */\n\tselectionHighlightMaxLength?: number;\n\t/**\n\t * Enable semantic occurrences highlight.\n\t * Defaults to 'singleFile'.\n\t * 'off' disables occurrence highlighting\n\t * 'singleFile' triggers occurrence highlighting in the current document\n\t * 'multiFile' triggers occurrence highlighting across valid open documents\n\t */\n\toccurrencesHighlight?: 'off' | 'singleFile' | 'multiFile';\n\t/**\n\t * Controls delay for occurrences highlighting\n\t * Defaults to 250.\n\t * Minimum value is 0\n\t * Maximum value is 2000\n\t */\n\toccurrencesHighlightDelay?: number;\n\t/**\n\t * Show code lens\n\t * Defaults to true.\n\t */\n\tcodeLens?: boolean;\n\t/**\n\t * Code lens font family. Defaults to editor font family.\n\t */\n\tcodeLensFontFamily?: string;\n\t/**\n\t * Code lens font size. Default to 90% of the editor font size\n\t */\n\tcodeLensFontSize?: number;\n\t/**\n\t * Control the behavior and rendering of the code action lightbulb.\n\t */\n\tlightbulb?: IEditorLightbulbOptions;\n\t/**\n\t * Timeout for running code actions on save.\n\t */\n\tcodeActionsOnSaveTimeout?: number;\n\t/**\n\t * Enable code folding.\n\t * Defaults to true.\n\t */\n\tfolding?: boolean;\n\t/**\n\t * Selects the folding strategy. 'auto' uses the strategies contributed for the current document, 'indentation' uses the indentation based folding strategy.\n\t * Defaults to 'auto'.\n\t */\n\tfoldingStrategy?: 'auto' | 'indentation';\n\t/**\n\t * Enable highlight for folded regions.\n\t * Defaults to true.\n\t */\n\tfoldingHighlight?: boolean;\n\t/**\n\t * Auto fold imports folding regions.\n\t * Defaults to true.\n\t */\n\tfoldingImportsByDefault?: boolean;\n\t/**\n\t * Maximum number of foldable regions.\n\t * Defaults to 5000.\n\t */\n\tfoldingMaximumRegions?: number;\n\t/**\n\t * Controls whether the fold actions in the gutter stay always visible or hide unless the mouse is over the gutter.\n\t * Defaults to 'mouseover'.\n\t */\n\tshowFoldingControls?: 'always' | 'never' | 'mouseover';\n\t/**\n\t * Controls whether clicking on the empty content after a folded line will unfold the line.\n\t * Defaults to false.\n\t */\n\tunfoldOnClickAfterEndOfLine?: boolean;\n\t/**\n\t * Enable highlighting of matching brackets.\n\t * Defaults to 'always'.\n\t */\n\tmatchBrackets?: 'never' | 'near' | 'always';\n\t/**\n\t * Enable experimental rendering using WebGPU.\n\t * Defaults to 'off'.\n\t */\n\texperimentalGpuAcceleration?: 'on' | 'off';\n\t/**\n\t * Enable experimental whitespace rendering.\n\t * Defaults to 'svg'.\n\t */\n\texperimentalWhitespaceRendering?: 'svg' | 'font' | 'off';\n\t/**\n\t * Enable rendering of whitespace.\n\t * Defaults to 'selection'.\n\t */\n\trenderWhitespace?: 'none' | 'boundary' | 'selection' | 'trailing' | 'all';\n\t/**\n\t * Enable rendering of control characters.\n\t * Defaults to true.\n\t */\n\trenderControlCharacters?: boolean;\n\t/**\n\t * Enable rendering of current line highlight.\n\t * Defaults to all.\n\t */\n\trenderLineHighlight?: 'none' | 'gutter' | 'line' | 'all';\n\t/**\n\t * Control if the current line highlight should be rendered only the editor is focused.\n\t * Defaults to false.\n\t */\n\trenderLineHighlightOnlyWhenFocus?: boolean;\n\t/**\n\t * Inserting and deleting whitespace follows tab stops.\n\t */\n\tuseTabStops?: boolean;\n\t/**\n\t * Controls whether the editor should automatically remove indentation whitespace when joining lines with Delete.\n\t * Defaults to false.\n\t */\n\ttrimWhitespaceOnDelete?: boolean;\n\t/**\n\t * The font family\n\t */\n\tfontFamily?: string;\n\t/**\n\t * The font weight\n\t */\n\tfontWeight?: string;\n\t/**\n\t * The font size\n\t */\n\tfontSize?: number;\n\t/**\n\t * The line height\n\t */\n\tlineHeight?: number;\n\t/**\n\t * The letter spacing\n\t */\n\tletterSpacing?: number;\n\t/**\n\t * Controls fading out of unused variables.\n\t */\n\tshowUnused?: boolean;\n\t/**\n\t * Controls whether to focus the inline editor in the peek widget by default.\n\t * Defaults to false.\n\t */\n\tpeekWidgetDefaultFocus?: 'tree' | 'editor';\n\n\t/**\n\t * Sets a placeholder for the editor.\n\t * If set, the placeholder is shown if the editor is empty.\n\t*/\n\tplaceholder?: string | undefined;\n\n\t/**\n\t * Controls whether the definition link opens element in the peek widget.\n\t * Defaults to false.\n\t */\n\tdefinitionLinkOpensInPeek?: boolean;\n\t/**\n\t * Controls strikethrough deprecated variables.\n\t */\n\tshowDeprecated?: boolean;\n\t/**\n\t * Controls whether suggestions allow matches in the middle of the word instead of only at the beginning\n\t */\n\tmatchOnWordStartOnly?: boolean;\n\t/**\n\t * Control the behavior and rendering of the inline hints.\n\t */\n\tinlayHints?: IEditorInlayHintsOptions;\n\t/**\n\t * Control if the editor should use shadow DOM.\n\t */\n\tuseShadowDOM?: boolean;\n\t/**\n\t * Controls the behavior of editor guides.\n\t*/\n\tguides?: IGuidesOptions;\n\n\t/**\n\t * Controls the behavior of the unicode highlight feature\n\t * (by default, ambiguous and invisible characters are highlighted).\n\t */\n\tunicodeHighlight?: IUnicodeHighlightOptions;\n\n\t/**\n\t * Configures bracket pair colorization (disabled by default).\n\t*/\n\tbracketPairColorization?: IBracketPairColorizationOptions;\n\n\t/**\n\t * Controls dropping into the editor from an external source.\n\t *\n\t * When enabled, this shows a preview of the drop location and triggers an `onDropIntoEditor` event.\n\t */\n\tdropIntoEditor?: IDropIntoEditorOptions;\n\n\t/**\n\t * Sets whether the new experimental edit context should be used instead of the text area.\n\t */\n\teditContext?: boolean;\n\n\t/**\n\t * Controls whether to render rich HTML screen reader content when the EditContext is enabled\n\t */\n\trenderRichScreenReaderContent?: boolean;\n\n\t/**\n\t * Controls support for changing how content is pasted into the editor.\n\t */\n\tpasteAs?: IPasteAsOptions;\n\n\t/**\n\t * Controls whether the editor / terminal receives tabs or defers them to the workbench for navigation.\n\t */\n\ttabFocusMode?: boolean;\n\n\t/**\n\t * Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\n\t */\n\tinlineCompletionsAccessibilityVerbose?: boolean;\n}\n\n/**\n * @internal\n * The width of the minimap gutter, in pixels.\n */\nexport const MINIMAP_GUTTER_WIDTH = 8;\n\nexport interface IDiffEditorBaseOptions {\n\t/**\n\t * Allow the user to resize the diff editor split view.\n\t * Defaults to true.\n\t */\n\tenableSplitViewResizing?: boolean;\n\n\t/**\n\t * The default ratio when rendering side-by-side editors.\n\t * Must be a number between 0 and 1, min sizes apply.\n\t * Defaults to 0.5\n\t */\n\tsplitViewDefaultRatio?: number;\n\n\t/**\n\t * Render the differences in two side-by-side editors.\n\t * Defaults to true.\n\t */\n\trenderSideBySide?: boolean;\n\n\t/**\n\t * When `renderSideBySide` is enabled, `useInlineViewWhenSpaceIsLimited` is set,\n\t * and the diff editor has a width less than `renderSideBySideInlineBreakpoint`, the inline view is used.\n\t */\n\trenderSideBySideInlineBreakpoint?: number | undefined;\n\n\t/**\n\t * When `renderSideBySide` is enabled, `useInlineViewWhenSpaceIsLimited` is set,\n\t * and the diff editor has a width less than `renderSideBySideInlineBreakpoint`, the inline view is used.\n\t */\n\tuseInlineViewWhenSpaceIsLimited?: boolean;\n\n\t/**\n\t * If set, the diff editor is optimized for small views.\n\t * Defaults to `false`.\n\t*/\n\tcompactMode?: boolean;\n\n\t/**\n\t * Timeout in milliseconds after which diff computation is cancelled.\n\t * Defaults to 5000.\n\t */\n\tmaxComputationTime?: number;\n\n\t/**\n\t * Maximum supported file size in MB.\n\t * Defaults to 50.\n\t */\n\tmaxFileSize?: number;\n\n\t/**\n\t * Compute the diff by ignoring leading/trailing whitespace\n\t * Defaults to true.\n\t */\n\tignoreTrimWhitespace?: boolean;\n\n\t/**\n\t * Render +/- indicators for added/deleted changes.\n\t * Defaults to true.\n\t */\n\trenderIndicators?: boolean;\n\n\t/**\n\t * Shows icons in the glyph margin to revert changes.\n\t * Default to true.\n\t */\n\trenderMarginRevertIcon?: boolean;\n\n\t/**\n\t * Indicates if the gutter menu should be rendered.\n\t*/\n\trenderGutterMenu?: boolean;\n\n\t/**\n\t * Original model should be editable?\n\t * Defaults to false.\n\t */\n\toriginalEditable?: boolean;\n\n\t/**\n\t * Should the diff editor enable code lens?\n\t * Defaults to false.\n\t */\n\tdiffCodeLens?: boolean;\n\n\t/**\n\t * Is the diff editor should render overview ruler\n\t * Defaults to true\n\t */\n\trenderOverviewRuler?: boolean;\n\n\t/**\n\t * Control the wrapping of the diff editor.\n\t */\n\tdiffWordWrap?: 'off' | 'on' | 'inherit';\n\n\t/**\n\t * Diff Algorithm\n\t*/\n\tdiffAlgorithm?: 'legacy' | 'advanced';\n\n\t/**\n\t * Whether the diff editor aria label should be verbose.\n\t */\n\taccessibilityVerbose?: boolean;\n\n\texperimental?: {\n\t\t/**\n\t\t * Defaults to false.\n\t\t */\n\t\tshowMoves?: boolean;\n\n\t\tshowEmptyDecorations?: boolean;\n\n\t\t/**\n\t\t * Only applies when `renderSideBySide` is set to false.\n\t\t*/\n\t\tuseTrueInlineView?: boolean;\n\t};\n\n\t/**\n\t * Is the diff editor inside another editor\n\t * Defaults to false\n\t */\n\tisInEmbeddedEditor?: boolean;\n\n\t/**\n\t * If the diff editor should only show the difference review mode.\n\t */\n\tonlyShowAccessibleDiffViewer?: boolean;\n\n\thideUnchangedRegions?: {\n\t\tenabled?: boolean;\n\t\trevealLineCount?: number;\n\t\tminimumLineCount?: number;\n\t\tcontextLineCount?: number;\n\t};\n}\n\n/**\n * Configuration options for the diff editor.\n */\nexport interface IDiffEditorOptions extends IEditorOptions, IDiffEditorBaseOptions {\n}\n\n/**\n * @internal\n */\nexport type ValidDiffEditorBaseOptions = Readonly<Required<IDiffEditorBaseOptions>>;\n\n//#endregion\n\n/**\n * An event describing that the configuration of the editor has changed.\n */\nexport class ConfigurationChangedEvent {\n\tprivate readonly _values: boolean[];\n\t/**\n\t * @internal\n\t */\n\tconstructor(values: boolean[]) {\n\t\tthis._values = values;\n\t}\n\tpublic hasChanged(id: EditorOption): boolean {\n\t\treturn this._values[id];\n\t}\n}\n\n/**\n * All computed editor options.\n */\nexport interface IComputedEditorOptions {\n\tget<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;\n}\n\n//#region IEditorOption\n\n/**\n * @internal\n */\nexport interface IEnvironmentalOptions {\n\treadonly memory: ComputeOptionsMemory | null;\n\treadonly outerWidth: number;\n\treadonly outerHeight: number;\n\treadonly fontInfo: FontInfo;\n\treadonly extraEditorClassName: string;\n\treadonly isDominatedByLongLines: boolean;\n\treadonly viewLineCount: number;\n\treadonly lineNumbersDigitCount: number;\n\treadonly emptySelectionClipboard: boolean;\n\treadonly pixelRatio: number;\n\treadonly tabFocusMode: boolean;\n\treadonly inputMode: 'insert' | 'overtype';\n\treadonly accessibilitySupport: AccessibilitySupport;\n\treadonly glyphMarginDecorationLaneCount: number;\n\treadonly editContextSupported: boolean;\n}\n\n/**\n * @internal\n */\nexport class ComputeOptionsMemory {\n\n\tpublic stableMinimapLayoutInput: IMinimapLayoutInput | null;\n\tpublic stableFitMaxMinimapScale: number;\n\tpublic stableFitRemainingWidth: number;\n\n\tconstructor() {\n\t\tthis.stableMinimapLayoutInput = null;\n\t\tthis.stableFitMaxMinimapScale = 0;\n\t\tthis.stableFitRemainingWidth = 0;\n\t}\n}\n\nexport interface IEditorOption<K extends EditorOption, V> {\n\treadonly id: K;\n\treadonly name: string;\n\tdefaultValue: V;\n\t/**\n\t * @internal\n\t */\n\treadonly schema: IConfigurationPropertySchema | { [path: string]: IConfigurationPropertySchema } | undefined;\n\t/**\n\t * @internal\n\t */\n\tvalidate(input: unknown): V;\n\t/**\n\t * @internal\n\t */\n\tcompute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: V): V;\n\n\t/**\n\t * Might modify `value`.\n\t*/\n\tapplyUpdate(value: V | undefined, update: V): ApplyUpdateResult<V>;\n}\n\n/**\n * @internal\n */\ntype PossibleKeyName0<V> = { [K in keyof IEditorOptions]: IEditorOptions[K] extends V | undefined ? K : never }[keyof IEditorOptions];\n/**\n * @internal\n */\ntype PossibleKeyName<V> = NonNullable<PossibleKeyName0<V>>;\n\n/**\n * @internal\n */\nabstract class BaseEditorOption<K extends EditorOption, T, V> implements IEditorOption<K, V> {\n\n\tpublic readonly id: K;\n\tpublic readonly name: string;\n\tpublic readonly defaultValue: V;\n\tpublic readonly schema: IConfigurationPropertySchema | { [path: string]: IConfigurationPropertySchema } | undefined;\n\n\tconstructor(id: K, name: PossibleKeyName<T>, defaultValue: V, schema?: IConfigurationPropertySchema | { [path: string]: IConfigurationPropertySchema }) {\n\t\tthis.id = id;\n\t\tthis.name = name;\n\t\tthis.defaultValue = defaultValue;\n\t\tthis.schema = schema;\n\t}\n\n\tpublic applyUpdate(value: V | undefined, update: V): ApplyUpdateResult<V> {\n\t\treturn applyUpdate(value, update);\n\t}\n\n\tpublic abstract validate(input: unknown): V;\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: V): V {\n\t\treturn value;\n\t}\n}\n\nexport class ApplyUpdateResult<T> {\n\tconstructor(\n\t\tpublic readonly newValue: T,\n\t\tpublic readonly didChange: boolean\n\t) { }\n}\n\nfunction applyUpdate<T>(value: T | undefined, update: T): ApplyUpdateResult<T> {\n\tif (typeof value !== 'object' || typeof update !== 'object' || !value || !update) {\n\t\treturn new ApplyUpdateResult(update, value !== update);\n\t}\n\tif (Array.isArray(value) || Array.isArray(update)) {\n\t\tconst arrayEquals = Array.isArray(value) && Array.isArray(update) && arrays.equals(value, update);\n\t\treturn new ApplyUpdateResult(update, !arrayEquals);\n\t}\n\tlet didChange = false;\n\tfor (const key in update) {\n\t\tif (update.hasOwnProperty(key)) {\n\t\t\tconst result = applyUpdate(value[key], update[key]);\n\t\t\tif (result.didChange) {\n\t\t\t\tvalue[key] = result.newValue;\n\t\t\t\tdidChange = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn new ApplyUpdateResult(value, didChange);\n}\n\n/**\n * @internal\n */\nabstract class ComputedEditorOption<K extends EditorOption, V> implements IEditorOption<K, V> {\n\n\tpublic readonly id: K;\n\tpublic readonly name: '_never_';\n\tpublic readonly defaultValue: V;\n\tpublic readonly schema: IConfigurationPropertySchema | undefined = undefined;\n\n\tconstructor(id: K, defaultValue: V) {\n\t\tthis.id = id;\n\t\tthis.name = '_never_';\n\t\tthis.defaultValue = defaultValue;\n\t}\n\n\tpublic applyUpdate(value: V | undefined, update: V): ApplyUpdateResult<V> {\n\t\treturn applyUpdate(value, update);\n\t}\n\n\tpublic validate(input: unknown): V {\n\t\treturn this.defaultValue;\n\t}\n\n\tpublic abstract compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: V): V;\n}\n\nabstract class SimpleEditorOption<K extends EditorOption, V> implements IEditorOption<K, V> {\n\n\tpublic readonly id: K;\n\tpublic readonly name: PossibleKeyName<V>;\n\tpublic readonly defaultValue: V;\n\tpublic readonly schema: IConfigurationPropertySchema | undefined;\n\n\tconstructor(id: K, name: PossibleKeyName<V>, defaultValue: V, schema?: IConfigurationPropertySchema) {\n\t\tthis.id = id;\n\t\tthis.name = name;\n\t\tthis.defaultValue = defaultValue;\n\t\tthis.schema = schema;\n\t}\n\n\tpublic applyUpdate(value: V | undefined, update: V): ApplyUpdateResult<V> {\n\t\treturn applyUpdate(value, update);\n\t}\n\n\tpublic abstract validate(input: unknown): V;\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: V): V {\n\t\treturn value;\n\t}\n}\n\n/**\n * @internal\n */\nexport function boolean(value: unknown, defaultValue: boolean): boolean {\n\tif (typeof value === 'undefined') {\n\t\treturn defaultValue;\n\t}\n\tif (value === 'false') {\n\t\t// treat the string 'false' as false\n\t\treturn false;\n\t}\n\treturn Boolean(value);\n}\n\nclass EditorBooleanOption<K extends EditorOption> extends SimpleEditorOption<K, boolean> {\n\n\tconstructor(id: K, name: PossibleKeyName<boolean>, defaultValue: boolean, schema: IConfigurationPropertySchema | undefined = undefined) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'boolean';\n\t\t\tschema.default = defaultValue;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t}\n\n\tpublic override validate(input: unknown): boolean {\n\t\treturn boolean(input, this.defaultValue);\n\t}\n}\n\n/**\n * @internal\n */\nexport function clampedInt<T = number>(value: unknown, defaultValue: T, minimum: number, maximum: number): number | T {\n\tif (typeof value === 'string') {\n\t\tvalue = parseInt(value, 10);\n\t}\n\tif (typeof value !== 'number' || isNaN(value)) {\n\t\treturn defaultValue;\n\t}\n\tlet r = value;\n\tr = Math.max(minimum, r);\n\tr = Math.min(maximum, r);\n\treturn r | 0;\n}\n\nclass EditorIntOption<K extends EditorOption> extends SimpleEditorOption<K, number> {\n\n\tpublic static clampedInt<T>(value: unknown, defaultValue: T, minimum: number, maximum: number): number | T {\n\t\treturn clampedInt(value, defaultValue, minimum, maximum);\n\t}\n\n\tpublic readonly minimum: number;\n\tpublic readonly maximum: number;\n\n\tconstructor(id: K, name: PossibleKeyName<number>, defaultValue: number, minimum: number, maximum: number, schema: IConfigurationPropertySchema | undefined = undefined) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'integer';\n\t\t\tschema.default = defaultValue;\n\t\t\tschema.minimum = minimum;\n\t\t\tschema.maximum = maximum;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t\tthis.minimum = minimum;\n\t\tthis.maximum = maximum;\n\t}\n\n\tpublic override validate(input: unknown): number {\n\t\treturn EditorIntOption.clampedInt(input, this.defaultValue, this.minimum, this.maximum);\n\t}\n}\n/**\n * @internal\n */\nexport function clampedFloat<T extends number>(value: unknown, defaultValue: T, minimum: number, maximum: number): number | T {\n\tif (typeof value === 'undefined') {\n\t\treturn defaultValue;\n\t}\n\tconst r = EditorFloatOption.float(value, defaultValue);\n\treturn EditorFloatOption.clamp(r, minimum, maximum);\n}\n\nclass EditorFloatOption<K extends EditorOption> extends SimpleEditorOption<K, number> {\n\n\tpublic readonly minimum: number | undefined;\n\tpublic readonly maximum: number | undefined;\n\n\tpublic static clamp(n: number, min: number, max: number): number {\n\t\tif (n < min) {\n\t\t\treturn min;\n\t\t}\n\t\tif (n > max) {\n\t\t\treturn max;\n\t\t}\n\t\treturn n;\n\t}\n\n\tpublic static float(value: unknown, defaultValue: number): number {\n\t\tif (typeof value === 'string') {\n\t\t\tvalue = parseFloat(value);\n\t\t}\n\t\tif (typeof value !== 'number' || isNaN(value)) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn value;\n\t}\n\n\tpublic readonly validationFn: (value: number) => number;\n\n\tconstructor(id: K, name: PossibleKeyName<number>, defaultValue: number, validationFn: (value: number) => number, schema?: IConfigurationPropertySchema, minimum?: number, maximum?: number) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'number';\n\t\t\tschema.default = defaultValue;\n\t\t\tschema.minimum = minimum;\n\t\t\tschema.maximum = maximum;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t\tthis.validationFn = validationFn;\n\t\tthis.minimum = minimum;\n\t\tthis.maximum = maximum;\n\t}\n\n\tpublic override validate(input: unknown): number {\n\t\treturn this.validationFn(EditorFloatOption.float(input, this.defaultValue));\n\t}\n}\n\nclass EditorStringOption<K extends EditorOption> extends SimpleEditorOption<K, string> {\n\n\tpublic static string(value: unknown, defaultValue: string): string {\n\t\tif (typeof value !== 'string') {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn value;\n\t}\n\n\tconstructor(id: K, name: PossibleKeyName<string>, defaultValue: string, schema: IConfigurationPropertySchema | undefined = undefined) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'string';\n\t\t\tschema.default = defaultValue;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t}\n\n\tpublic override validate(input: unknown): string {\n\t\treturn EditorStringOption.string(input, this.defaultValue);\n\t}\n}\n\n/**\n * @internal\n */\nexport function stringSet<T extends string>(value: unknown, defaultValue: T, allowedValues: ReadonlyArray<T>, renamedValues?: Record<string, T>): T {\n\tif (typeof value !== 'string') {\n\t\treturn defaultValue;\n\t}\n\tif (renamedValues && value in renamedValues) {\n\t\treturn renamedValues[value];\n\t}\n\tif (allowedValues.indexOf(value as T) === -1) {\n\t\treturn defaultValue;\n\t}\n\treturn value as T;\n}\n\nclass EditorStringEnumOption<K extends EditorOption, V extends string> extends SimpleEditorOption<K, V> {\n\n\tprivate readonly _allowedValues: ReadonlyArray<V>;\n\n\tconstructor(id: K, name: PossibleKeyName<V>, defaultValue: V, allowedValues: ReadonlyArray<V>, schema: IConfigurationPropertySchema | undefined = undefined) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'string';\n\t\t\tschema.enum = allowedValues.slice(0);\n\t\t\tschema.default = defaultValue;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t\tthis._allowedValues = allowedValues;\n\t}\n\n\tpublic override validate(input: unknown): V {\n\t\treturn stringSet<V>(input, this.defaultValue, this._allowedValues);\n\t}\n}\n\nclass EditorEnumOption<K extends EditorOption, T extends string, V> extends BaseEditorOption<K, T, V> {\n\n\tprivate readonly _allowedValues: T[];\n\tprivate readonly _convert: (value: T) => V;\n\n\tconstructor(id: K, name: PossibleKeyName<T>, defaultValue: V, defaultStringValue: string, allowedValues: T[], convert: (value: T) => V, schema: IConfigurationPropertySchema | undefined = undefined) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'string';\n\t\t\tschema.enum = allowedValues;\n\t\t\tschema.default = defaultStringValue;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t\tthis._allowedValues = allowedValues;\n\t\tthis._convert = convert;\n\t}\n\n\tpublic validate(input: unknown): V {\n\t\tif (typeof input !== 'string') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tif (this._allowedValues.indexOf(<T>input) === -1) {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\treturn this._convert(<T>input);\n\t}\n}\n\n//#endregion\n\n//#region autoIndent\n\nfunction _autoIndentFromString(autoIndent: 'none' | 'keep' | 'brackets' | 'advanced' | 'full'): EditorAutoIndentStrategy {\n\tswitch (autoIndent) {\n\t\tcase 'none': return EditorAutoIndentStrategy.None;\n\t\tcase 'keep': return EditorAutoIndentStrategy.Keep;\n\t\tcase 'brackets': return EditorAutoIndentStrategy.Brackets;\n\t\tcase 'advanced': return EditorAutoIndentStrategy.Advanced;\n\t\tcase 'full': return EditorAutoIndentStrategy.Full;\n\t}\n}\n\n//#endregion\n\n//#region accessibilitySupport\n\nclass EditorAccessibilitySupport extends BaseEditorOption<EditorOption.accessibilitySupport, 'auto' | 'off' | 'on', AccessibilitySupport> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.accessibilitySupport, 'accessibilitySupport', AccessibilitySupport.Unknown,\n\t\t\t{\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['auto', 'on', 'off'],\n\t\t\t\tenumDescriptions: [\n\t\t\t\t\tnls.localize('accessibilitySupport.auto', \"Use platform APIs to detect when a Screen Reader is attached.\"),\n\t\t\t\t\tnls.localize('accessibilitySupport.on', \"Optimize for usage with a Screen Reader.\"),\n\t\t\t\t\tnls.localize('accessibilitySupport.off', \"Assume a screen reader is not attached.\"),\n\t\t\t\t],\n\t\t\t\tdefault: 'auto',\n\t\t\t\ttags: ['accessibility'],\n\t\t\t\tdescription: nls.localize('accessibilitySupport', \"Controls if the UI should run in a mode where it is optimized for screen readers.\")\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): AccessibilitySupport {\n\t\tswitch (input) {\n\t\t\tcase 'auto': return AccessibilitySupport.Unknown;\n\t\t\tcase 'off': return AccessibilitySupport.Disabled;\n\t\t\tcase 'on': return AccessibilitySupport.Enabled;\n\t\t}\n\t\treturn this.defaultValue;\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: AccessibilitySupport): AccessibilitySupport {\n\t\tif (value === AccessibilitySupport.Unknown) {\n\t\t\t// The editor reads the `accessibilitySupport` from the environment\n\t\t\treturn env.accessibilitySupport;\n\t\t}\n\t\treturn value;\n\t}\n}\n\n//#endregion\n\n//#region comments\n\n/**\n * Configuration options for editor comments\n */\nexport interface IEditorCommentsOptions {\n\t/**\n\t * Insert a space after the line comment token and inside the block comments tokens.\n\t * Defaults to true.\n\t */\n\tinsertSpace?: boolean;\n\t/**\n\t * Ignore empty lines when inserting line comments.\n\t * Defaults to true.\n\t */\n\tignoreEmptyLines?: boolean;\n}\n\n/**\n * @internal\n */\nexport type EditorCommentsOptions = Readonly<Required<IEditorCommentsOptions>>;\n\nclass EditorComments extends BaseEditorOption<EditorOption.comments, IEditorCommentsOptions, EditorCommentsOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorCommentsOptions = {\n\t\t\tinsertSpace: true,\n\t\t\tignoreEmptyLines: true,\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.comments, 'comments', defaults,\n\t\t\t{\n\t\t\t\t'editor.comments.insertSpace': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.insertSpace,\n\t\t\t\t\tdescription: nls.localize('comments.insertSpace', \"Controls whether a space character is inserted when commenting.\")\n\t\t\t\t},\n\t\t\t\t'editor.comments.ignoreEmptyLines': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.ignoreEmptyLines,\n\t\t\t\t\tdescription: nls.localize('comments.ignoreEmptyLines', 'Controls if empty lines should be ignored with toggle, add or remove actions for line comments.')\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorCommentsOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorCommentsOptions>;\n\t\treturn {\n\t\t\tinsertSpace: boolean(input.insertSpace, this.defaultValue.insertSpace),\n\t\t\tignoreEmptyLines: boolean(input.ignoreEmptyLines, this.defaultValue.ignoreEmptyLines),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region cursorBlinking\n\n/**\n * The kind of animation in which the editor's cursor should be rendered.\n */\nexport const enum TextEditorCursorBlinkingStyle {\n\t/**\n\t * Hidden\n\t */\n\tHidden = 0,\n\t/**\n\t * Blinking\n\t */\n\tBlink = 1,\n\t/**\n\t * Blinking with smooth fading\n\t */\n\tSmooth = 2,\n\t/**\n\t * Blinking with prolonged filled state and smooth fading\n\t */\n\tPhase = 3,\n\t/**\n\t * Expand collapse animation on the y axis\n\t */\n\tExpand = 4,\n\t/**\n\t * No-Blinking\n\t */\n\tSolid = 5\n}\n\n/**\n * @internal\n */\nexport function cursorBlinkingStyleFromString(cursorBlinkingStyle: 'blink' | 'smooth' | 'phase' | 'expand' | 'solid'): TextEditorCursorBlinkingStyle {\n\tswitch (cursorBlinkingStyle) {\n\t\tcase 'blink': return TextEditorCursorBlinkingStyle.Blink;\n\t\tcase 'smooth': return TextEditorCursorBlinkingStyle.Smooth;\n\t\tcase 'phase': return TextEditorCursorBlinkingStyle.Phase;\n\t\tcase 'expand': return TextEditorCursorBlinkingStyle.Expand;\n\t\tcase 'solid': return TextEditorCursorBlinkingStyle.Solid;\n\t}\n}\n\n//#endregion\n\n//#region cursorStyle\n\n/**\n * The style in which the editor's cursor should be rendered.\n */\nexport enum TextEditorCursorStyle {\n\t/**\n\t * As a vertical line (sitting between two characters).\n\t */\n\tLine = 1,\n\t/**\n\t * As a block (sitting on top of a character).\n\t */\n\tBlock = 2,\n\t/**\n\t * As a horizontal line (sitting under a character).\n\t */\n\tUnderline = 3,\n\t/**\n\t * As a thin vertical line (sitting between two characters).\n\t */\n\tLineThin = 4,\n\t/**\n\t * As an outlined block (sitting on top of a character).\n\t */\n\tBlockOutline = 5,\n\t/**\n\t * As a thin horizontal line (sitting under a character).\n\t */\n\tUnderlineThin = 6\n}\n\n/**\n * @internal\n */\nexport function cursorStyleFromString(cursorStyle: 'line' | 'block' | 'underline' | 'line-thin' | 'block-outline' | 'underline-thin'): TextEditorCursorStyle {\n\tswitch (cursorStyle) {\n\t\tcase 'line': return TextEditorCursorStyle.Line;\n\t\tcase 'block': return TextEditorCursorStyle.Block;\n\t\tcase 'underline': return TextEditorCursorStyle.Underline;\n\t\tcase 'line-thin': return TextEditorCursorStyle.LineThin;\n\t\tcase 'block-outline': return TextEditorCursorStyle.BlockOutline;\n\t\tcase 'underline-thin': return TextEditorCursorStyle.UnderlineThin;\n\t}\n}\n\n//#endregion\n\n//#region editorClassName\n\nclass EditorClassName extends ComputedEditorOption<EditorOption.editorClassName, string> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.editorClassName, '');\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: string): string {\n\t\tconst classNames = ['monaco-editor'];\n\t\tif (options.get(EditorOption.extraEditorClassName)) {\n\t\t\tclassNames.push(options.get(EditorOption.extraEditorClassName));\n\t\t}\n\t\tif (env.extraEditorClassName) {\n\t\t\tclassNames.push(env.extraEditorClassName);\n\t\t}\n\t\tif (options.get(EditorOption.mouseStyle) === 'default') {\n\t\t\tclassNames.push('mouse-default');\n\t\t} else if (options.get(EditorOption.mouseStyle) === 'copy') {\n\t\t\tclassNames.push('mouse-copy');\n\t\t}\n\n\t\tif (options.get(EditorOption.showUnused)) {\n\t\t\tclassNames.push('showUnused');\n\t\t}\n\n\t\tif (options.get(EditorOption.showDeprecated)) {\n\t\t\tclassNames.push('showDeprecated');\n\t\t}\n\n\t\treturn classNames.join(' ');\n\t}\n}\n\n//#endregion\n\n//#region emptySelectionClipboard\n\nclass EditorEmptySelectionClipboard extends EditorBooleanOption<EditorOption.emptySelectionClipboard> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.emptySelectionClipboard, 'emptySelectionClipboard', true,\n\t\t\t{ description: nls.localize('emptySelectionClipboard', \"Controls whether copying without a selection copies the current line.\") }\n\t\t);\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: boolean): boolean {\n\t\treturn value && env.emptySelectionClipboard;\n\t}\n}\n\n//#endregion\n\n//#region find\n\n/**\n * Configuration options for editor find widget\n */\nexport interface IEditorFindOptions {\n\t/**\n\t* Controls whether the cursor should move to find matches while typing.\n\t*/\n\tcursorMoveOnType?: boolean;\n\t/**\n\t * Controls whether the find widget should search as you type.\n\t */\n\tfindOnType?: boolean;\n\t/**\n\t * Controls if we seed search string in the Find Widget with editor selection.\n\t */\n\tseedSearchStringFromSelection?: 'never' | 'always' | 'selection';\n\t/**\n\t * Controls if Find in Selection flag is turned on in the editor.\n\t */\n\tautoFindInSelection?: 'never' | 'always' | 'multiline';\n\t/*\n\t * Controls whether the Find Widget should add extra lines on top of the editor.\n\t */\n\taddExtraSpaceOnTop?: boolean;\n\t/**\n\t * @internal\n\t * Controls if the Find Widget should read or modify the shared find clipboard on macOS\n\t */\n\tglobalFindClipboard?: boolean;\n\t/**\n\t * Controls whether the search result and diff result automatically restarts from the beginning (or the end) when no further matches can be found\n\t */\n\tloop?: boolean;\n\t/**\n\t * @internal\n\t * Controls how the find widget search history should be stored\n\t */\n\thistory?: 'never' | 'workspace';\n\t/**\n\t * @internal\n\t * Controls how the replace widget search history should be stored\n\t */\n\treplaceHistory?: 'never' | 'workspace';\n}\n\n/**\n * @internal\n */\nexport type EditorFindOptions = Readonly<Required<IEditorFindOptions>>;\n\nclass EditorFind extends BaseEditorOption<EditorOption.find, IEditorFindOptions, EditorFindOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorFindOptions = {\n\t\t\tcursorMoveOnType: true,\n\t\t\tfindOnType: true,\n\t\t\tseedSearchStringFromSelection: 'always',\n\t\t\tautoFindInSelection: 'never',\n\t\t\tglobalFindClipboard: false,\n\t\t\taddExtraSpaceOnTop: true,\n\t\t\tloop: true,\n\t\t\thistory: 'workspace',\n\t\t\treplaceHistory: 'workspace',\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.find, 'find', defaults,\n\t\t\t{\n\t\t\t\t'editor.find.cursorMoveOnType': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.cursorMoveOnType,\n\t\t\t\t\tdescription: nls.localize('find.cursorMoveOnType', \"Controls whether the cursor should jump to find matches while typing.\")\n\t\t\t\t},\n\t\t\t\t'editor.find.seedSearchStringFromSelection': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['never', 'always', 'selection'],\n\t\t\t\t\tdefault: defaults.seedSearchStringFromSelection,\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.find.seedSearchStringFromSelection.never', 'Never seed search string from the editor selection.'),\n\t\t\t\t\t\tnls.localize('editor.find.seedSearchStringFromSelection.always', 'Always seed search string from the editor selection, including word at cursor position.'),\n\t\t\t\t\t\tnls.localize('editor.find.seedSearchStringFromSelection.selection', 'Only seed search string from the editor selection.')\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('find.seedSearchStringFromSelection', \"Controls whether the search string in the Find Widget is seeded from the editor selection.\")\n\t\t\t\t},\n\t\t\t\t'editor.find.autoFindInSelection': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['never', 'always', 'multiline'],\n\t\t\t\t\tdefault: defaults.autoFindInSelection,\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.find.autoFindInSelection.never', 'Never turn on Find in Selection automatically (default).'),\n\t\t\t\t\t\tnls.localize('editor.find.autoFindInSelection.always', 'Always turn on Find in Selection automatically.'),\n\t\t\t\t\t\tnls.localize('editor.find.autoFindInSelection.multiline', 'Turn on Find in Selection automatically when multiple lines of content are selected.')\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('find.autoFindInSelection', \"Controls the condition for turning on Find in Selection automatically.\")\n\t\t\t\t},\n\t\t\t\t'editor.find.globalFindClipboard': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.globalFindClipboard,\n\t\t\t\t\tdescription: nls.localize('find.globalFindClipboard', \"Controls whether the Find Widget should read or modify the shared find clipboard on macOS.\"),\n\t\t\t\t\tincluded: platform.isMacintosh\n\t\t\t\t},\n\t\t\t\t'editor.find.addExtraSpaceOnTop': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.addExtraSpaceOnTop,\n\t\t\t\t\tdescription: nls.localize('find.addExtraSpaceOnTop', \"Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.\")\n\t\t\t\t},\n\t\t\t\t'editor.find.loop': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.loop,\n\t\t\t\t\tdescription: nls.localize('find.loop', \"Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.\")\n\t\t\t\t},\n\t\t\t\t'editor.find.history': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['never', 'workspace'],\n\t\t\t\t\tdefault: 'workspace',\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.find.history.never', 'Do not store search history from the find widget.'),\n\t\t\t\t\t\tnls.localize('editor.find.history.workspace', 'Store search history across the active workspace'),\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('find.history', \"Controls how the find widget history should be stored\")\n\t\t\t\t},\n\t\t\t\t'editor.find.replaceHistory': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['never', 'workspace'],\n\t\t\t\t\tdefault: 'workspace',\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.find.replaceHistory.never', 'Do not store history from the replace widget.'),\n\t\t\t\t\t\tnls.localize('editor.find.replaceHistory.workspace', 'Store replace history across the active workspace'),\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('find.replaceHistory', \"Controls how the replace widget history should be stored\")\n\t\t\t\t},\n\t\t\t\t'editor.find.findOnType': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.findOnType,\n\t\t\t\t\tdescription: nls.localize('find.findOnType', \"Controls whether the Find Widget should search as you type.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorFindOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorFindOptions>;\n\t\treturn {\n\t\t\tcursorMoveOnType: boolean(input.cursorMoveOnType, this.defaultValue.cursorMoveOnType),\n\t\t\tfindOnType: boolean(input.findOnType, this.defaultValue.findOnType),\n\t\t\tseedSearchStringFromSelection: typeof input.seedSearchStringFromSelection === 'boolean'\n\t\t\t\t? (input.seedSearchStringFromSelection ? 'always' : 'never')\n\t\t\t\t: stringSet<'never' | 'always' | 'selection'>(input.seedSearchStringFromSelection, this.defaultValue.seedSearchStringFromSelection, ['never', 'always', 'selection']),\n\t\t\tautoFindInSelection: typeof input.autoFindInSelection === 'boolean'\n\t\t\t\t? (input.autoFindInSelection ? 'always' : 'never')\n\t\t\t\t: stringSet<'never' | 'always' | 'multiline'>(input.autoFindInSelection, this.defaultValue.autoFindInSelection, ['never', 'always', 'multiline']),\n\t\t\tglobalFindClipboard: boolean(input.globalFindClipboard, this.defaultValue.globalFindClipboard),\n\t\t\taddExtraSpaceOnTop: boolean(input.addExtraSpaceOnTop, this.defaultValue.addExtraSpaceOnTop),\n\t\t\tloop: boolean(input.loop, this.defaultValue.loop),\n\t\t\thistory: stringSet<'never' | 'workspace'>(input.history, this.defaultValue.history, ['never', 'workspace']),\n\t\t\treplaceHistory: stringSet<'never' | 'workspace'>(input.replaceHistory, this.defaultValue.replaceHistory, ['never', 'workspace']),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region fontLigatures\n\n/**\n * @internal\n */\nexport class EditorFontLigatures extends BaseEditorOption<EditorOption.fontLigatures, boolean | string, string> {\n\n\tpublic static OFF = '\"liga\" off, \"calt\" off';\n\tpublic static ON = '\"liga\" on, \"calt\" on';\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.fontLigatures, 'fontLigatures', EditorFontLigatures.OFF,\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdescription: nls.localize('fontLigatures', \"Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.\"),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdescription: nls.localize('fontFeatureSettings', \"Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.\")\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tdescription: nls.localize('fontLigaturesGeneral', \"Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property.\"),\n\t\t\t\tdefault: false\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): string {\n\t\tif (typeof input === 'undefined') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tif (typeof input === 'string') {\n\t\t\tif (input === 'false' || input.length === 0) {\n\t\t\t\treturn EditorFontLigatures.OFF;\n\t\t\t}\n\t\t\tif (input === 'true') {\n\t\t\t\treturn EditorFontLigatures.ON;\n\t\t\t}\n\t\t\treturn input;\n\t\t}\n\t\tif (Boolean(input)) {\n\t\t\treturn EditorFontLigatures.ON;\n\t\t}\n\t\treturn EditorFontLigatures.OFF;\n\t}\n}\n\n//#endregion\n\n//#region fontVariations\n\n/**\n * @internal\n */\nexport class EditorFontVariations extends BaseEditorOption<EditorOption.fontVariations, boolean | string, string> {\n\t// Text is laid out using default settings.\n\tpublic static OFF = FONT_VARIATION_OFF;\n\n\t// Translate `fontWeight` config to the `font-variation-settings` CSS property.\n\tpublic static TRANSLATE = FONT_VARIATION_TRANSLATE;\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.fontVariations, 'fontVariations', EditorFontVariations.OFF,\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdescription: nls.localize('fontVariations', \"Enables/Disables the translation from font-weight to font-variation-settings. Change this to a string for fine-grained control of the 'font-variation-settings' CSS property.\"),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdescription: nls.localize('fontVariationSettings', \"Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.\")\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tdescription: nls.localize('fontVariationsGeneral', \"Configures font variations. Can be either a boolean to enable/disable the translation from font-weight to font-variation-settings or a string for the value of the CSS 'font-variation-settings' property.\"),\n\t\t\t\tdefault: false\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): string {\n\t\tif (typeof input === 'undefined') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tif (typeof input === 'string') {\n\t\t\tif (input === 'false') {\n\t\t\t\treturn EditorFontVariations.OFF;\n\t\t\t}\n\t\t\tif (input === 'true') {\n\t\t\t\treturn EditorFontVariations.TRANSLATE;\n\t\t\t}\n\t\t\treturn input;\n\t\t}\n\t\tif (Boolean(input)) {\n\t\t\treturn EditorFontVariations.TRANSLATE;\n\t\t}\n\t\treturn EditorFontVariations.OFF;\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: string): string {\n\t\t// The value is computed from the fontWeight if it is true.\n\t\t// So take the result from env.fontInfo\n\t\treturn env.fontInfo.fontVariationSettings;\n\t}\n}\n\n//#endregion\n\n//#region fontInfo\n\nclass EditorFontInfo extends ComputedEditorOption<EditorOption.fontInfo, FontInfo> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.fontInfo, new FontInfo({\n\t\t\tpixelRatio: 0,\n\t\t\tfontFamily: '',\n\t\t\tfontWeight: '',\n\t\t\tfontSize: 0,\n\t\t\tfontFeatureSettings: '',\n\t\t\tfontVariationSettings: '',\n\t\t\tlineHeight: 0,\n\t\t\tletterSpacing: 0,\n\t\t\tisMonospace: false,\n\t\t\ttypicalHalfwidthCharacterWidth: 0,\n\t\t\ttypicalFullwidthCharacterWidth: 0,\n\t\t\tcanUseHalfwidthRightwardsArrow: false,\n\t\t\tspaceWidth: 0,\n\t\t\tmiddotWidth: 0,\n\t\t\twsmiddotWidth: 0,\n\t\t\tmaxDigitWidth: 0,\n\t\t}, false));\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: FontInfo): FontInfo {\n\t\treturn env.fontInfo;\n\t}\n}\n\n//#endregion\n\n//#region effectiveCursorStyle\n\nclass EffectiveCursorStyle extends ComputedEditorOption<EditorOption.effectiveCursorStyle, TextEditorCursorStyle> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.effectiveCursorStyle, TextEditorCursorStyle.Line);\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: TextEditorCursorStyle): TextEditorCursorStyle {\n\t\treturn env.inputMode === 'overtype' ?\n\t\t\toptions.get(EditorOption.overtypeCursorStyle) :\n\t\t\toptions.get(EditorOption.cursorStyle);\n\t}\n}\n\n//#endregion\n\n//#region effectiveExperimentalEditContext\n\nclass EffectiveEditContextEnabled extends ComputedEditorOption<EditorOption.effectiveEditContext, boolean> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.effectiveEditContext, false);\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions): boolean {\n\t\treturn env.editContextSupported && options.get(EditorOption.editContext);\n\t}\n}\n\n//#endregion\n\n//#region effectiveAllowVariableFonts\n\nclass EffectiveAllowVariableFonts extends ComputedEditorOption<EditorOption.effectiveAllowVariableFonts, boolean> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.effectiveAllowVariableFonts, false);\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions): boolean {\n\t\tconst accessibilitySupport = env.accessibilitySupport;\n\t\tif (accessibilitySupport === AccessibilitySupport.Enabled) {\n\t\t\treturn options.get(EditorOption.allowVariableFontsInAccessibilityMode);\n\t\t} else {\n\t\t\treturn options.get(EditorOption.allowVariableFonts);\n\t\t}\n\t}\n}\n\n//#engregion\n\n//#region fontSize\n\nclass EditorFontSize extends SimpleEditorOption<EditorOption.fontSize, number> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.fontSize, 'fontSize', EDITOR_FONT_DEFAULTS.fontSize,\n\t\t\t{\n\t\t\t\ttype: 'number',\n\t\t\t\tminimum: 6,\n\t\t\t\tmaximum: 100,\n\t\t\t\tdefault: EDITOR_FONT_DEFAULTS.fontSize,\n\t\t\t\tdescription: nls.localize('fontSize', \"Controls the font size in pixels.\")\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic override validate(input: unknown): number {\n\t\tconst r = EditorFloatOption.float(input, this.defaultValue);\n\t\tif (r === 0) {\n\t\t\treturn EDITOR_FONT_DEFAULTS.fontSize;\n\t\t}\n\t\treturn EditorFloatOption.clamp(r, 6, 100);\n\t}\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: number): number {\n\t\t// The final fontSize respects the editor zoom level.\n\t\t// So take the result from env.fontInfo\n\t\treturn env.fontInfo.fontSize;\n\t}\n}\n\n//#endregion\n\n//#region fontWeight\n\nclass EditorFontWeight extends BaseEditorOption<EditorOption.fontWeight, string, string> {\n\tprivate static SUGGESTION_VALUES = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\n\tprivate static MINIMUM_VALUE = 1;\n\tprivate static MAXIMUM_VALUE = 1000;\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.fontWeight, 'fontWeight', EDITOR_FONT_DEFAULTS.fontWeight,\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tminimum: EditorFontWeight.MINIMUM_VALUE,\n\t\t\t\t\t\tmaximum: EditorFontWeight.MAXIMUM_VALUE,\n\t\t\t\t\t\terrorMessage: nls.localize('fontWeightErrorMessage', \"Only \\\"normal\\\" and \\\"bold\\\" keywords or numbers between 1 and 1000 are allowed.\")\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tpattern: '^(normal|bold|1000|[1-9][0-9]{0,2})$'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: EditorFontWeight.SUGGESTION_VALUES\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tdefault: EDITOR_FONT_DEFAULTS.fontWeight,\n\t\t\t\tdescription: nls.localize('fontWeight', \"Controls the font weight. Accepts \\\"normal\\\" and \\\"bold\\\" keywords or numbers between 1 and 1000.\")\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): string {\n\t\tif (input === 'normal' || input === 'bold') {\n\t\t\treturn input;\n\t\t}\n\t\treturn String(EditorIntOption.clampedInt(input, EDITOR_FONT_DEFAULTS.fontWeight, EditorFontWeight.MINIMUM_VALUE, EditorFontWeight.MAXIMUM_VALUE));\n\t}\n}\n\n//#endregion\n\n//#region gotoLocation\n\nexport type GoToLocationValues = 'peek' | 'gotoAndPeek' | 'goto';\n\n/**\n * Configuration options for go to location\n */\nexport interface IGotoLocationOptions {\n\n\tmultiple?: GoToLocationValues;\n\n\tmultipleDefinitions?: GoToLocationValues;\n\tmultipleTypeDefinitions?: GoToLocationValues;\n\tmultipleDeclarations?: GoToLocationValues;\n\tmultipleImplementations?: GoToLocationValues;\n\tmultipleReferences?: GoToLocationValues;\n\tmultipleTests?: GoToLocationValues;\n\n\talternativeDefinitionCommand?: string;\n\talternativeTypeDefinitionCommand?: string;\n\talternativeDeclarationCommand?: string;\n\talternativeImplementationCommand?: string;\n\talternativeReferenceCommand?: string;\n\talternativeTestsCommand?: string;\n}\n\n/**\n * @internal\n */\nexport type GoToLocationOptions = Readonly<Required<IGotoLocationOptions>>;\n\nclass EditorGoToLocation extends BaseEditorOption<EditorOption.gotoLocation, IGotoLocationOptions, GoToLocationOptions> {\n\n\tconstructor() {\n\t\tconst defaults: GoToLocationOptions = {\n\t\t\tmultiple: 'peek',\n\t\t\tmultipleDefinitions: 'peek',\n\t\t\tmultipleTypeDefinitions: 'peek',\n\t\t\tmultipleDeclarations: 'peek',\n\t\t\tmultipleImplementations: 'peek',\n\t\t\tmultipleReferences: 'peek',\n\t\t\tmultipleTests: 'peek',\n\t\t\talternativeDefinitionCommand: 'editor.action.goToReferences',\n\t\t\talternativeTypeDefinitionCommand: 'editor.action.goToReferences',\n\t\t\talternativeDeclarationCommand: 'editor.action.goToReferences',\n\t\t\talternativeImplementationCommand: '',\n\t\t\talternativeReferenceCommand: '',\n\t\t\talternativeTestsCommand: '',\n\t\t};\n\t\tconst jsonSubset: IJSONSchema = {\n\t\t\ttype: 'string',\n\t\t\tenum: ['peek', 'gotoAndPeek', 'goto'],\n\t\t\tdefault: defaults.multiple,\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('editor.gotoLocation.multiple.peek', 'Show Peek view of the results (default)'),\n\t\t\t\tnls.localize('editor.gotoLocation.multiple.gotoAndPeek', 'Go to the primary result and show a Peek view'),\n\t\t\t\tnls.localize('editor.gotoLocation.multiple.goto', 'Go to the primary result and enable Peek-less navigation to others')\n\t\t\t]\n\t\t};\n\t\tconst alternativeCommandOptions = ['', 'editor.action.referenceSearch.trigger', 'editor.action.goToReferences', 'editor.action.peekImplementation', 'editor.action.goToImplementation', 'editor.action.peekTypeDefinition', 'editor.action.goToTypeDefinition', 'editor.action.peekDeclaration', 'editor.action.revealDeclaration', 'editor.action.peekDefinition', 'editor.action.revealDefinitionAside', 'editor.action.revealDefinition'];\n\t\tsuper(\n\t\t\tEditorOption.gotoLocation, 'gotoLocation', defaults,\n\t\t\t{\n\t\t\t\t'editor.gotoLocation.multiple': {\n\t\t\t\t\tdeprecationMessage: nls.localize('editor.gotoLocation.multiple.deprecated', \"This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.\"),\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.multipleDefinitions': {\n\t\t\t\t\tdescription: nls.localize('editor.editor.gotoLocation.multipleDefinitions', \"Controls the behavior the 'Go to Definition'-command when multiple target locations exist.\"),\n\t\t\t\t\t...jsonSubset,\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.multipleTypeDefinitions': {\n\t\t\t\t\tdescription: nls.localize('editor.editor.gotoLocation.multipleTypeDefinitions', \"Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.\"),\n\t\t\t\t\t...jsonSubset,\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.multipleDeclarations': {\n\t\t\t\t\tdescription: nls.localize('editor.editor.gotoLocation.multipleDeclarations', \"Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.\"),\n\t\t\t\t\t...jsonSubset,\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.multipleImplementations': {\n\t\t\t\t\tdescription: nls.localize('editor.editor.gotoLocation.multipleImplemenattions', \"Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.\"),\n\t\t\t\t\t...jsonSubset,\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.multipleReferences': {\n\t\t\t\t\tdescription: nls.localize('editor.editor.gotoLocation.multipleReferences', \"Controls the behavior the 'Go to References'-command when multiple target locations exist.\"),\n\t\t\t\t\t...jsonSubset,\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.alternativeDefinitionCommand': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.alternativeDefinitionCommand,\n\t\t\t\t\tenum: alternativeCommandOptions,\n\t\t\t\t\tdescription: nls.localize('alternativeDefinitionCommand', \"Alternative command id that is being executed when the result of 'Go to Definition' is the current location.\")\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.alternativeTypeDefinitionCommand': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.alternativeTypeDefinitionCommand,\n\t\t\t\t\tenum: alternativeCommandOptions,\n\t\t\t\t\tdescription: nls.localize('alternativeTypeDefinitionCommand', \"Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.\")\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.alternativeDeclarationCommand': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.alternativeDeclarationCommand,\n\t\t\t\t\tenum: alternativeCommandOptions,\n\t\t\t\t\tdescription: nls.localize('alternativeDeclarationCommand', \"Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.\")\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.alternativeImplementationCommand': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.alternativeImplementationCommand,\n\t\t\t\t\tenum: alternativeCommandOptions,\n\t\t\t\t\tdescription: nls.localize('alternativeImplementationCommand', \"Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.\")\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.alternativeReferenceCommand': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.alternativeReferenceCommand,\n\t\t\t\t\tenum: alternativeCommandOptions,\n\t\t\t\t\tdescription: nls.localize('alternativeReferenceCommand', \"Alternative command id that is being executed when the result of 'Go to Reference' is the current location.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): GoToLocationOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IGotoLocationOptions>;\n\t\treturn {\n\t\t\tmultiple: stringSet<GoToLocationValues>(input.multiple, this.defaultValue.multiple, ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleDefinitions: stringSet<GoToLocationValues>(input.multipleDefinitions, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleTypeDefinitions: stringSet<GoToLocationValues>(input.multipleTypeDefinitions, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleDeclarations: stringSet<GoToLocationValues>(input.multipleDeclarations, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleImplementations: stringSet<GoToLocationValues>(input.multipleImplementations, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleReferences: stringSet<GoToLocationValues>(input.multipleReferences, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleTests: stringSet<GoToLocationValues>(input.multipleTests, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\talternativeDefinitionCommand: EditorStringOption.string(input.alternativeDefinitionCommand, this.defaultValue.alternativeDefinitionCommand),\n\t\t\talternativeTypeDefinitionCommand: EditorStringOption.string(input.alternativeTypeDefinitionCommand, this.defaultValue.alternativeTypeDefinitionCommand),\n\t\t\talternativeDeclarationCommand: EditorStringOption.string(input.alternativeDeclarationCommand, this.defaultValue.alternativeDeclarationCommand),\n\t\t\talternativeImplementationCommand: EditorStringOption.string(input.alternativeImplementationCommand, this.defaultValue.alternativeImplementationCommand),\n\t\t\talternativeReferenceCommand: EditorStringOption.string(input.alternativeReferenceCommand, this.defaultValue.alternativeReferenceCommand),\n\t\t\talternativeTestsCommand: EditorStringOption.string(input.alternativeTestsCommand, this.defaultValue.alternativeTestsCommand),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region hover\n\n/**\n * Configuration options for editor hover\n */\nexport interface IEditorHoverOptions {\n\t/**\n\t * Enable the hover.\n\t * Defaults to true.\n\t */\n\tenabled?: boolean;\n\t/**\n\t * Delay for showing the hover.\n\t * Defaults to 300.\n\t */\n\tdelay?: number;\n\t/**\n\t * Is the hover sticky such that it can be clicked and its contents selected?\n\t * Defaults to true.\n\t */\n\tsticky?: boolean;\n\t/**\n\t * Controls how long the hover is visible after you hovered out of it.\n\t * Require sticky setting to be true.\n\t */\n\thidingDelay?: number;\n\t/**\n\t * Should the hover be shown above the line if possible?\n\t * Defaults to false.\n\t */\n\tabove?: boolean;\n}\n\n/**\n * @internal\n */\nexport type EditorHoverOptions = Readonly<Required<IEditorHoverOptions>>;\n\nclass EditorHover extends BaseEditorOption<EditorOption.hover, IEditorHoverOptions, EditorHoverOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorHoverOptions = {\n\t\t\tenabled: true,\n\t\t\tdelay: 300,\n\t\t\thidingDelay: 300,\n\t\t\tsticky: true,\n\t\t\tabove: true,\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.hover, 'hover', defaults,\n\t\t\t{\n\t\t\t\t'editor.hover.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('hover.enabled', \"Controls whether the hover is shown.\")\n\t\t\t\t},\n\t\t\t\t'editor.hover.delay': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.delay,\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tmaximum: 10000,\n\t\t\t\t\tdescription: nls.localize('hover.delay', \"Controls the delay in milliseconds after which the hover is shown.\")\n\t\t\t\t},\n\t\t\t\t'editor.hover.sticky': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.sticky,\n\t\t\t\t\tdescription: nls.localize('hover.sticky', \"Controls whether the hover should remain visible when mouse is moved over it.\")\n\t\t\t\t},\n\t\t\t\t'editor.hover.hidingDelay': {\n\t\t\t\t\ttype: 'integer',\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tdefault: defaults.hidingDelay,\n\t\t\t\t\tmarkdownDescription: nls.localize('hover.hidingDelay', \"Controls the delay in milliseconds after which the hover is hidden. Requires `#editor.hover.sticky#` to be enabled.\")\n\t\t\t\t},\n\t\t\t\t'editor.hover.above': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.above,\n\t\t\t\t\tdescription: nls.localize('hover.above', \"Prefer showing hovers above the line, if there's space.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorHoverOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorHoverOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tdelay: EditorIntOption.clampedInt(input.delay, this.defaultValue.delay, 0, 10000),\n\t\t\tsticky: boolean(input.sticky, this.defaultValue.sticky),\n\t\t\thidingDelay: EditorIntOption.clampedInt(input.hidingDelay, this.defaultValue.hidingDelay, 0, 600000),\n\t\t\tabove: boolean(input.above, this.defaultValue.above),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region layoutInfo\n\n/**\n * A description for the overview ruler position.\n */\nexport interface OverviewRulerPosition {\n\t/**\n\t * Width of the overview ruler\n\t */\n\treadonly width: number;\n\t/**\n\t * Height of the overview ruler\n\t */\n\treadonly height: number;\n\t/**\n\t * Top position for the overview ruler\n\t */\n\treadonly top: number;\n\t/**\n\t * Right position for the overview ruler\n\t */\n\treadonly right: number;\n}\n\nexport const enum RenderMinimap {\n\tNone = 0,\n\tText = 1,\n\tBlocks = 2,\n}\n\n/**\n * The internal layout details of the editor.\n */\nexport interface EditorLayoutInfo {\n\n\t/**\n\t * Full editor width.\n\t */\n\treadonly width: number;\n\t/**\n\t * Full editor height.\n\t */\n\treadonly height: number;\n\n\t/**\n\t * Left position for the glyph margin.\n\t */\n\treadonly glyphMarginLeft: number;\n\t/**\n\t * The width of the glyph margin.\n\t */\n\treadonly glyphMarginWidth: number;\n\n\t/**\n\t * The number of decoration lanes to render in the glyph margin.\n\t */\n\treadonly glyphMarginDecorationLaneCount: number;\n\n\t/**\n\t * Left position for the line numbers.\n\t */\n\treadonly lineNumbersLeft: number;\n\t/**\n\t * The width of the line numbers.\n\t */\n\treadonly lineNumbersWidth: number;\n\n\t/**\n\t * Left position for the line decorations.\n\t */\n\treadonly decorationsLeft: number;\n\t/**\n\t * The width of the line decorations.\n\t */\n\treadonly decorationsWidth: number;\n\n\t/**\n\t * Left position for the content (actual text)\n\t */\n\treadonly contentLeft: number;\n\t/**\n\t * The width of the content (actual text)\n\t */\n\treadonly contentWidth: number;\n\n\t/**\n\t * Layout information for the minimap\n\t */\n\treadonly minimap: EditorMinimapLayoutInfo;\n\n\t/**\n\t * The number of columns (of typical characters) fitting on a viewport line.\n\t */\n\treadonly viewportColumn: number;\n\n\treadonly isWordWrapMinified: boolean;\n\treadonly isViewportWrapping: boolean;\n\treadonly wrappingColumn: number;\n\n\t/**\n\t * The width of the vertical scrollbar.\n\t */\n\treadonly verticalScrollbarWidth: number;\n\t/**\n\t * The height of the horizontal scrollbar.\n\t */\n\treadonly horizontalScrollbarHeight: number;\n\n\t/**\n\t * The position of the overview ruler.\n\t */\n\treadonly overviewRuler: OverviewRulerPosition;\n}\n\n/**\n * The internal layout details of the editor.\n */\nexport interface EditorMinimapLayoutInfo {\n\treadonly renderMinimap: RenderMinimap;\n\treadonly minimapLeft: number;\n\treadonly minimapWidth: number;\n\treadonly minimapHeightIsEditorHeight: boolean;\n\treadonly minimapIsSampling: boolean;\n\treadonly minimapScale: number;\n\treadonly minimapLineHeight: number;\n\treadonly minimapCanvasInnerWidth: number;\n\treadonly minimapCanvasInnerHeight: number;\n\treadonly minimapCanvasOuterWidth: number;\n\treadonly minimapCanvasOuterHeight: number;\n}\n\n/**\n * @internal\n */\nexport interface EditorLayoutInfoComputerEnv {\n\treadonly memory: ComputeOptionsMemory | null;\n\treadonly outerWidth: number;\n\treadonly outerHeight: number;\n\treadonly isDominatedByLongLines: boolean;\n\treadonly lineHeight: number;\n\treadonly viewLineCount: number;\n\treadonly lineNumbersDigitCount: number;\n\treadonly typicalHalfwidthCharacterWidth: number;\n\treadonly maxDigitWidth: number;\n\treadonly pixelRatio: number;\n\treadonly glyphMarginDecorationLaneCount: number;\n}\n\n/**\n * @internal\n */\nexport interface IMinimapLayoutInput {\n\treadonly outerWidth: number;\n\treadonly outerHeight: number;\n\treadonly lineHeight: number;\n\treadonly typicalHalfwidthCharacterWidth: number;\n\treadonly pixelRatio: number;\n\treadonly scrollBeyondLastLine: boolean;\n\treadonly paddingTop: number;\n\treadonly paddingBottom: number;\n\treadonly minimap: Readonly<Required<IEditorMinimapOptions>>;\n\treadonly verticalScrollbarWidth: number;\n\treadonly viewLineCount: number;\n\treadonly remainingWidth: number;\n\treadonly isViewportWrapping: boolean;\n}\n\n/**\n * @internal\n */\nexport class EditorLayoutInfoComputer extends ComputedEditorOption<EditorOption.layoutInfo, EditorLayoutInfo> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.layoutInfo, {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tglyphMarginLeft: 0,\n\t\t\tglyphMarginWidth: 0,\n\t\t\tglyphMarginDecorationLaneCount: 0,\n\t\t\tlineNumbersLeft: 0,\n\t\t\tlineNumbersWidth: 0,\n\t\t\tdecorationsLeft: 0,\n\t\t\tdecorationsWidth: 0,\n\t\t\tcontentLeft: 0,\n\t\t\tcontentWidth: 0,\n\t\t\tminimap: {\n\t\t\t\trenderMinimap: RenderMinimap.None,\n\t\t\t\tminimapLeft: 0,\n\t\t\t\tminimapWidth: 0,\n\t\t\t\tminimapHeightIsEditorHeight: false,\n\t\t\t\tminimapIsSampling: false,\n\t\t\t\tminimapScale: 1,\n\t\t\t\tminimapLineHeight: 1,\n\t\t\t\tminimapCanvasInnerWidth: 0,\n\t\t\t\tminimapCanvasInnerHeight: 0,\n\t\t\t\tminimapCanvasOuterWidth: 0,\n\t\t\t\tminimapCanvasOuterHeight: 0,\n\t\t\t},\n\t\t\tviewportColumn: 0,\n\t\t\tisWordWrapMinified: false,\n\t\t\tisViewportWrapping: false,\n\t\t\twrappingColumn: -1,\n\t\t\tverticalScrollbarWidth: 0,\n\t\t\thorizontalScrollbarHeight: 0,\n\t\t\toverviewRuler: {\n\t\t\t\ttop: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tright: 0\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: EditorLayoutInfo): EditorLayoutInfo {\n\t\treturn EditorLayoutInfoComputer.computeLayout(options, {\n\t\t\tmemory: env.memory,\n\t\t\touterWidth: env.outerWidth,\n\t\t\touterHeight: env.outerHeight,\n\t\t\tisDominatedByLongLines: env.isDominatedByLongLines,\n\t\t\tlineHeight: env.fontInfo.lineHeight,\n\t\t\tviewLineCount: env.viewLineCount,\n\t\t\tlineNumbersDigitCount: env.lineNumbersDigitCount,\n\t\t\ttypicalHalfwidthCharacterWidth: env.fontInfo.typicalHalfwidthCharacterWidth,\n\t\t\tmaxDigitWidth: env.fontInfo.maxDigitWidth,\n\t\t\tpixelRatio: env.pixelRatio,\n\t\t\tglyphMarginDecorationLaneCount: env.glyphMarginDecorationLaneCount\n\t\t});\n\t}\n\n\tpublic static computeContainedMinimapLineCount(input: {\n\t\tviewLineCount: number;\n\t\tscrollBeyondLastLine: boolean;\n\t\tpaddingTop: number;\n\t\tpaddingBottom: number;\n\t\theight: number;\n\t\tlineHeight: number;\n\t\tpixelRatio: number;\n\t}): { typicalViewportLineCount: number; extraLinesBeforeFirstLine: number; extraLinesBeyondLastLine: number; desiredRatio: number; minimapLineCount: number } {\n\t\tconst typicalViewportLineCount = input.height / input.lineHeight;\n\t\tconst extraLinesBeforeFirstLine = Math.floor(input.paddingTop / input.lineHeight);\n\t\tlet extraLinesBeyondLastLine = Math.floor(input.paddingBottom / input.lineHeight);\n\t\tif (input.scrollBeyondLastLine) {\n\t\t\textraLinesBeyondLastLine = Math.max(extraLinesBeyondLastLine, typicalViewportLineCount - 1);\n\t\t}\n\t\tconst desiredRatio = (extraLinesBeforeFirstLine + input.viewLineCount + extraLinesBeyondLastLine) / (input.pixelRatio * input.height);\n\t\tconst minimapLineCount = Math.floor(input.viewLineCount / desiredRatio);\n\t\treturn { typicalViewportLineCount, extraLinesBeforeFirstLine, extraLinesBeyondLastLine, desiredRatio, minimapLineCount };\n\t}\n\n\tprivate static _computeMinimapLayout(input: IMinimapLayoutInput, memory: ComputeOptionsMemory): EditorMinimapLayoutInfo {\n\t\tconst outerWidth = input.outerWidth;\n\t\tconst outerHeight = input.outerHeight;\n\t\tconst pixelRatio = input.pixelRatio;\n\n\t\tif (!input.minimap.enabled) {\n\t\t\treturn {\n\t\t\t\trenderMinimap: RenderMinimap.None,\n\t\t\t\tminimapLeft: 0,\n\t\t\t\tminimapWidth: 0,\n\t\t\t\tminimapHeightIsEditorHeight: false,\n\t\t\t\tminimapIsSampling: false,\n\t\t\t\tminimapScale: 1,\n\t\t\t\tminimapLineHeight: 1,\n\t\t\t\tminimapCanvasInnerWidth: 0,\n\t\t\t\tminimapCanvasInnerHeight: Math.floor(pixelRatio * outerHeight),\n\t\t\t\tminimapCanvasOuterWidth: 0,\n\t\t\t\tminimapCanvasOuterHeight: outerHeight,\n\t\t\t};\n\t\t}\n\n\t\t// Can use memory if only the `viewLineCount` and `remainingWidth` have changed\n\t\tconst stableMinimapLayoutInput = memory.stableMinimapLayoutInput;\n\t\tconst couldUseMemory = (\n\t\t\tstableMinimapLayoutInput\n\t\t\t// && input.outerWidth === lastMinimapLayoutInput.outerWidth !!! INTENTIONAL OMITTED\n\t\t\t&& input.outerHeight === stableMinimapLayoutInput.outerHeight\n\t\t\t&& input.lineHeight === stableMinimapLayoutInput.lineHeight\n\t\t\t&& input.typicalHalfwidthCharacterWidth === stableMinimapLayoutInput.typicalHalfwidthCharacterWidth\n\t\t\t&& input.pixelRatio === stableMinimapLayoutInput.pixelRatio\n\t\t\t&& input.scrollBeyondLastLine === stableMinimapLayoutInput.scrollBeyondLastLine\n\t\t\t&& input.paddingTop === stableMinimapLayoutInput.paddingTop\n\t\t\t&& input.paddingBottom === stableMinimapLayoutInput.paddingBottom\n\t\t\t&& input.minimap.enabled === stableMinimapLayoutInput.minimap.enabled\n\t\t\t&& input.minimap.side === stableMinimapLayoutInput.minimap.side\n\t\t\t&& input.minimap.size === stableMinimapLayoutInput.minimap.size\n\t\t\t&& input.minimap.showSlider === stableMinimapLayoutInput.minimap.showSlider\n\t\t\t&& input.minimap.renderCharacters === stableMinimapLayoutInput.minimap.renderCharacters\n\t\t\t&& input.minimap.maxColumn === stableMinimapLayoutInput.minimap.maxColumn\n\t\t\t&& input.minimap.scale === stableMinimapLayoutInput.minimap.scale\n\t\t\t&& input.verticalScrollbarWidth === stableMinimapLayoutInput.verticalScrollbarWidth\n\t\t\t// && input.viewLineCount === lastMinimapLayoutInput.viewLineCount !!! INTENTIONAL OMITTED\n\t\t\t// && input.remainingWidth === lastMinimapLayoutInput.remainingWidth !!! INTENTIONAL OMITTED\n\t\t\t&& input.isViewportWrapping === stableMinimapLayoutInput.isViewportWrapping\n\t\t);\n\n\t\tconst lineHeight = input.lineHeight;\n\t\tconst typicalHalfwidthCharacterWidth = input.typicalHalfwidthCharacterWidth;\n\t\tconst scrollBeyondLastLine = input.scrollBeyondLastLine;\n\t\tconst minimapRenderCharacters = input.minimap.renderCharacters;\n\t\tlet minimapScale = (pixelRatio >= 2 ? Math.round(input.minimap.scale * 2) : input.minimap.scale);\n\t\tconst minimapMaxColumn = input.minimap.maxColumn;\n\t\tconst minimapSize = input.minimap.size;\n\t\tconst minimapSide = input.minimap.side;\n\t\tconst verticalScrollbarWidth = input.verticalScrollbarWidth;\n\t\tconst viewLineCount = input.viewLineCount;\n\t\tconst remainingWidth = input.remainingWidth;\n\t\tconst isViewportWrapping = input.isViewportWrapping;\n\n\t\tconst baseCharHeight = minimapRenderCharacters ? 2 : 3;\n\t\tlet minimapCanvasInnerHeight = Math.floor(pixelRatio * outerHeight);\n\t\tconst minimapCanvasOuterHeight = minimapCanvasInnerHeight / pixelRatio;\n\t\tlet minimapHeightIsEditorHeight = false;\n\t\tlet minimapIsSampling = false;\n\t\tlet minimapLineHeight = baseCharHeight * minimapScale;\n\t\tlet minimapCharWidth = minimapScale / pixelRatio;\n\t\tlet minimapWidthMultiplier: number = 1;\n\n\t\tif (minimapSize === 'fill' || minimapSize === 'fit') {\n\t\t\tconst { typicalViewportLineCount, extraLinesBeforeFirstLine, extraLinesBeyondLastLine, desiredRatio, minimapLineCount } = EditorLayoutInfoComputer.computeContainedMinimapLineCount({\n\t\t\t\tviewLineCount: viewLineCount,\n\t\t\t\tscrollBeyondLastLine: scrollBeyondLastLine,\n\t\t\t\tpaddingTop: input.paddingTop,\n\t\t\t\tpaddingBottom: input.paddingBottom,\n\t\t\t\theight: outerHeight,\n\t\t\t\tlineHeight: lineHeight,\n\t\t\t\tpixelRatio: pixelRatio\n\t\t\t});\n\t\t\t// ratio is intentionally not part of the layout to avoid the layout changing all the time\n\t\t\t// when doing sampling\n\t\t\tconst ratio = viewLineCount / minimapLineCount;\n\n\t\t\tif (ratio > 1) {\n\t\t\t\tminimapHeightIsEditorHeight = true;\n\t\t\t\tminimapIsSampling = true;\n\t\t\t\tminimapScale = 1;\n\t\t\t\tminimapLineHeight = 1;\n\t\t\t\tminimapCharWidth = minimapScale / pixelRatio;\n\t\t\t} else {\n\t\t\t\tlet fitBecomesFill = false;\n\t\t\t\tlet maxMinimapScale = minimapScale + 1;\n\n\t\t\t\tif (minimapSize === 'fit') {\n\t\t\t\t\tconst effectiveMinimapHeight = Math.ceil((extraLinesBeforeFirstLine + viewLineCount + extraLinesBeyondLastLine) * minimapLineHeight);\n\t\t\t\t\tif (isViewportWrapping && couldUseMemory && remainingWidth <= memory.stableFitRemainingWidth) {\n\t\t\t\t\t\t// There is a loop when using `fit` and viewport wrapping:\n\t\t\t\t\t\t// - view line count impacts minimap layout\n\t\t\t\t\t\t// - minimap layout impacts viewport width\n\t\t\t\t\t\t// - viewport width impacts view line count\n\t\t\t\t\t\t// To break the loop, once we go to a smaller minimap scale, we try to stick with it.\n\t\t\t\t\t\tfitBecomesFill = true;\n\t\t\t\t\t\tmaxMinimapScale = memory.stableFitMaxMinimapScale;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfitBecomesFill = (effectiveMinimapHeight > minimapCanvasInnerHeight);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (minimapSize === 'fill' || fitBecomesFill) {\n\t\t\t\t\tminimapHeightIsEditorHeight = true;\n\t\t\t\t\tconst configuredMinimapScale = minimapScale;\n\t\t\t\t\tminimapLineHeight = Math.min(lineHeight * pixelRatio, Math.max(1, Math.floor(1 / desiredRatio)));\n\t\t\t\t\tif (isViewportWrapping && couldUseMemory && remainingWidth <= memory.stableFitRemainingWidth) {\n\t\t\t\t\t\t// There is a loop when using `fill` and viewport wrapping:\n\t\t\t\t\t\t// - view line count impacts minimap layout\n\t\t\t\t\t\t// - minimap layout impacts viewport width\n\t\t\t\t\t\t// - viewport width impacts view line count\n\t\t\t\t\t\t// To break the loop, once we go to a smaller minimap scale, we try to stick with it.\n\t\t\t\t\t\tmaxMinimapScale = memory.stableFitMaxMinimapScale;\n\t\t\t\t\t}\n\t\t\t\t\tminimapScale = Math.min(maxMinimapScale, Math.max(1, Math.floor(minimapLineHeight / baseCharHeight)));\n\t\t\t\t\tif (minimapScale > configuredMinimapScale) {\n\t\t\t\t\t\tminimapWidthMultiplier = Math.min(2, minimapScale / configuredMinimapScale);\n\t\t\t\t\t}\n\t\t\t\t\tminimapCharWidth = minimapScale / pixelRatio / minimapWidthMultiplier;\n\t\t\t\t\tminimapCanvasInnerHeight = Math.ceil((Math.max(typicalViewportLineCount, extraLinesBeforeFirstLine + viewLineCount + extraLinesBeyondLastLine)) * minimapLineHeight);\n\t\t\t\t\tif (isViewportWrapping) {\n\t\t\t\t\t\t// remember for next time\n\t\t\t\t\t\tmemory.stableMinimapLayoutInput = input;\n\t\t\t\t\t\tmemory.stableFitRemainingWidth = remainingWidth;\n\t\t\t\t\t\tmemory.stableFitMaxMinimapScale = minimapScale;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmemory.stableMinimapLayoutInput = null;\n\t\t\t\t\t\tmemory.stableFitRemainingWidth = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Given:\n\t\t// (leaving 2px for the cursor to have space after the last character)\n\t\t// viewportColumn = (contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth\n\t\t// minimapWidth = viewportColumn * minimapCharWidth\n\t\t// contentWidth = remainingWidth - minimapWidth\n\t\t// What are good values for contentWidth and minimapWidth ?\n\n\t\t// minimapWidth = ((contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth) * minimapCharWidth\n\t\t// typicalHalfwidthCharacterWidth * minimapWidth = (contentWidth - verticalScrollbarWidth - 2) * minimapCharWidth\n\t\t// typicalHalfwidthCharacterWidth * minimapWidth = (remainingWidth - minimapWidth - verticalScrollbarWidth - 2) * minimapCharWidth\n\t\t// (typicalHalfwidthCharacterWidth + minimapCharWidth) * minimapWidth = (remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth\n\t\t// minimapWidth = ((remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth)\n\n\t\tconst minimapMaxWidth = Math.floor(minimapMaxColumn * minimapCharWidth);\n\t\tconst minimapWidth = Math.min(minimapMaxWidth, Math.max(0, Math.floor(((remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth))) + MINIMAP_GUTTER_WIDTH);\n\n\t\tlet minimapCanvasInnerWidth = Math.floor(pixelRatio * minimapWidth);\n\t\tconst minimapCanvasOuterWidth = minimapCanvasInnerWidth / pixelRatio;\n\t\tminimapCanvasInnerWidth = Math.floor(minimapCanvasInnerWidth * minimapWidthMultiplier);\n\n\t\tconst renderMinimap = (minimapRenderCharacters ? RenderMinimap.Text : RenderMinimap.Blocks);\n\t\tconst minimapLeft = (minimapSide === 'left' ? 0 : (outerWidth - minimapWidth - verticalScrollbarWidth));\n\n\t\treturn {\n\t\t\trenderMinimap,\n\t\t\tminimapLeft,\n\t\t\tminimapWidth,\n\t\t\tminimapHeightIsEditorHeight,\n\t\t\tminimapIsSampling,\n\t\t\tminimapScale,\n\t\t\tminimapLineHeight,\n\t\t\tminimapCanvasInnerWidth,\n\t\t\tminimapCanvasInnerHeight,\n\t\t\tminimapCanvasOuterWidth,\n\t\t\tminimapCanvasOuterHeight,\n\t\t};\n\t}\n\n\tpublic static computeLayout(options: IComputedEditorOptions, env: EditorLayoutInfoComputerEnv): EditorLayoutInfo {\n\t\tconst outerWidth = env.outerWidth | 0;\n\t\tconst outerHeight = env.outerHeight | 0;\n\t\tconst lineHeight = env.lineHeight | 0;\n\t\tconst lineNumbersDigitCount = env.lineNumbersDigitCount | 0;\n\t\tconst typicalHalfwidthCharacterWidth = env.typicalHalfwidthCharacterWidth;\n\t\tconst maxDigitWidth = env.maxDigitWidth;\n\t\tconst pixelRatio = env.pixelRatio;\n\t\tconst viewLineCount = env.viewLineCount;\n\n\t\tconst wordWrapOverride2 = options.get(EditorOption.wordWrapOverride2);\n\t\tconst wordWrapOverride1 = (wordWrapOverride2 === 'inherit' ? options.get(EditorOption.wordWrapOverride1) : wordWrapOverride2);\n\t\tconst wordWrap = (wordWrapOverride1 === 'inherit' ? options.get(EditorOption.wordWrap) : wordWrapOverride1);\n\n\t\tconst wordWrapColumn = options.get(EditorOption.wordWrapColumn);\n\t\tconst isDominatedByLongLines = env.isDominatedByLongLines;\n\n\t\tconst showGlyphMargin = options.get(EditorOption.glyphMargin);\n\t\tconst showLineNumbers = (options.get(EditorOption.lineNumbers).renderType !== RenderLineNumbersType.Off);\n\t\tconst lineNumbersMinChars = options.get(EditorOption.lineNumbersMinChars);\n\t\tconst scrollBeyondLastLine = options.get(EditorOption.scrollBeyondLastLine);\n\t\tconst padding = options.get(EditorOption.padding);\n\t\tconst minimap = options.get(EditorOption.minimap);\n\n\t\tconst scrollbar = options.get(EditorOption.scrollbar);\n\t\tconst verticalScrollbarWidth = scrollbar.verticalScrollbarSize;\n\t\tconst verticalScrollbarHasArrows = scrollbar.verticalHasArrows;\n\t\tconst scrollbarArrowSize = scrollbar.arrowSize;\n\t\tconst horizontalScrollbarHeight = scrollbar.horizontalScrollbarSize;\n\n\t\tconst folding = options.get(EditorOption.folding);\n\t\tconst showFoldingDecoration = options.get(EditorOption.showFoldingControls) !== 'never';\n\n\t\tlet lineDecorationsWidth = options.get(EditorOption.lineDecorationsWidth);\n\t\tif (folding && showFoldingDecoration) {\n\t\t\tlineDecorationsWidth += 16;\n\t\t}\n\n\t\tlet lineNumbersWidth = 0;\n\t\tif (showLineNumbers) {\n\t\t\tconst digitCount = Math.max(lineNumbersDigitCount, lineNumbersMinChars);\n\t\t\tlineNumbersWidth = Math.round(digitCount * maxDigitWidth);\n\t\t}\n\n\t\tlet glyphMarginWidth = 0;\n\t\tif (showGlyphMargin) {\n\t\t\tglyphMarginWidth = lineHeight * env.glyphMarginDecorationLaneCount;\n\t\t}\n\n\t\tlet glyphMarginLeft = 0;\n\t\tlet lineNumbersLeft = glyphMarginLeft + glyphMarginWidth;\n\t\tlet decorationsLeft = lineNumbersLeft + lineNumbersWidth;\n\t\tlet contentLeft = decorationsLeft + lineDecorationsWidth;\n\n\t\tconst remainingWidth = outerWidth - glyphMarginWidth - lineNumbersWidth - lineDecorationsWidth;\n\n\t\tlet isWordWrapMinified = false;\n\t\tlet isViewportWrapping = false;\n\t\tlet wrappingColumn = -1;\n\n\t\tif (options.get(EditorOption.accessibilitySupport) === AccessibilitySupport.Enabled && wordWrapOverride1 === 'inherit' && isDominatedByLongLines) {\n\t\t\t// Force viewport width wrapping if model is dominated by long lines\n\t\t\tisWordWrapMinified = true;\n\t\t\tisViewportWrapping = true;\n\t\t} else if (wordWrap === 'on' || wordWrap === 'bounded') {\n\t\t\tisViewportWrapping = true;\n\t\t} else if (wordWrap === 'wordWrapColumn') {\n\t\t\twrappingColumn = wordWrapColumn;\n\t\t}\n\n\t\tconst minimapLayout = EditorLayoutInfoComputer._computeMinimapLayout({\n\t\t\touterWidth: outerWidth,\n\t\t\touterHeight: outerHeight,\n\t\t\tlineHeight: lineHeight,\n\t\t\ttypicalHalfwidthCharacterWidth: typicalHalfwidthCharacterWidth,\n\t\t\tpixelRatio: pixelRatio,\n\t\t\tscrollBeyondLastLine: scrollBeyondLastLine,\n\t\t\tpaddingTop: padding.top,\n\t\t\tpaddingBottom: padding.bottom,\n\t\t\tminimap: minimap,\n\t\t\tverticalScrollbarWidth: verticalScrollbarWidth,\n\t\t\tviewLineCount: viewLineCount,\n\t\t\tremainingWidth: remainingWidth,\n\t\t\tisViewportWrapping: isViewportWrapping,\n\t\t}, env.memory || new ComputeOptionsMemory());\n\n\t\tif (minimapLayout.renderMinimap !== RenderMinimap.None && minimapLayout.minimapLeft === 0) {\n\t\t\t// the minimap is rendered to the left, so move everything to the right\n\t\t\tglyphMarginLeft += minimapLayout.minimapWidth;\n\t\t\tlineNumbersLeft += minimapLayout.minimapWidth;\n\t\t\tdecorationsLeft += minimapLayout.minimapWidth;\n\t\t\tcontentLeft += minimapLayout.minimapWidth;\n\t\t}\n\t\tconst contentWidth = remainingWidth - minimapLayout.minimapWidth;\n\n\t\t// (leaving 2px for the cursor to have space after the last character)\n\t\tconst viewportColumn = Math.max(1, Math.floor((contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth));\n\n\t\tconst verticalArrowSize = (verticalScrollbarHasArrows ? scrollbarArrowSize : 0);\n\n\t\tif (isViewportWrapping) {\n\t\t\t// compute the actual wrappingColumn\n\t\t\twrappingColumn = Math.max(1, viewportColumn);\n\t\t\tif (wordWrap === 'bounded') {\n\t\t\t\twrappingColumn = Math.min(wrappingColumn, wordWrapColumn);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\twidth: outerWidth,\n\t\t\theight: outerHeight,\n\n\t\t\tglyphMarginLeft: glyphMarginLeft,\n\t\t\tglyphMarginWidth: glyphMarginWidth,\n\t\t\tglyphMarginDecorationLaneCount: env.glyphMarginDecorationLaneCount,\n\n\t\t\tlineNumbersLeft: lineNumbersLeft,\n\t\t\tlineNumbersWidth: lineNumbersWidth,\n\n\t\t\tdecorationsLeft: decorationsLeft,\n\t\t\tdecorationsWidth: lineDecorationsWidth,\n\n\t\t\tcontentLeft: contentLeft,\n\t\t\tcontentWidth: contentWidth,\n\n\t\t\tminimap: minimapLayout,\n\n\t\t\tviewportColumn: viewportColumn,\n\n\t\t\tisWordWrapMinified: isWordWrapMinified,\n\t\t\tisViewportWrapping: isViewportWrapping,\n\t\t\twrappingColumn: wrappingColumn,\n\n\t\t\tverticalScrollbarWidth: verticalScrollbarWidth,\n\t\t\thorizontalScrollbarHeight: horizontalScrollbarHeight,\n\n\t\t\toverviewRuler: {\n\t\t\t\ttop: verticalArrowSize,\n\t\t\t\twidth: verticalScrollbarWidth,\n\t\t\t\theight: (outerHeight - 2 * verticalArrowSize),\n\t\t\t\tright: 0\n\t\t\t}\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region WrappingStrategy\nclass WrappingStrategy extends BaseEditorOption<EditorOption.wrappingStrategy, 'simple' | 'advanced', 'simple' | 'advanced'> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.wrappingStrategy, 'wrappingStrategy', 'simple',\n\t\t\t{\n\t\t\t\t'editor.wrappingStrategy': {\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('wrappingStrategy.simple', \"Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width.\"),\n\t\t\t\t\t\tnls.localize('wrappingStrategy.advanced', \"Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.\")\n\t\t\t\t\t],\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['simple', 'advanced'],\n\t\t\t\t\tdefault: 'simple',\n\t\t\t\t\tdescription: nls.localize('wrappingStrategy', \"Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): 'simple' | 'advanced' {\n\t\treturn stringSet<'simple' | 'advanced'>(input, 'simple', ['simple', 'advanced']);\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: 'simple' | 'advanced'): 'simple' | 'advanced' {\n\t\tconst accessibilitySupport = options.get(EditorOption.accessibilitySupport);\n\t\tif (accessibilitySupport === AccessibilitySupport.Enabled) {\n\t\t\t// if we know for a fact that a screen reader is attached, we switch our strategy to advanced to\n\t\t\t// help that the editor's wrapping points match the textarea's wrapping points\n\t\t\treturn 'advanced';\n\t\t}\n\t\treturn value;\n\t}\n}\n//#endregion\n\n//#region lightbulb\n\nexport enum ShowLightbulbIconMode {\n\tOff = 'off',\n\tOnCode = 'onCode',\n\tOn = 'on'\n}\n\n/**\n * Configuration options for editor lightbulb\n */\nexport interface IEditorLightbulbOptions {\n\t/**\n\t * Enable the lightbulb code action.\n\t * The three possible values are `off`, `on` and `onCode` and the default is `onCode`.\n\t * `off` disables the code action menu.\n\t * `on` shows the code action menu on code and on empty lines.\n\t * `onCode` shows the code action menu on code only.\n\t */\n\tenabled?: ShowLightbulbIconMode;\n}\n\n/**\n * @internal\n */\nexport type EditorLightbulbOptions = Readonly<Required<IEditorLightbulbOptions>>;\n\nclass EditorLightbulb extends BaseEditorOption<EditorOption.lightbulb, IEditorLightbulbOptions, EditorLightbulbOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorLightbulbOptions = { enabled: ShowLightbulbIconMode.OnCode };\n\t\tsuper(\n\t\t\tEditorOption.lightbulb, 'lightbulb', defaults,\n\t\t\t{\n\t\t\t\t'editor.lightbulb.enabled': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: [ShowLightbulbIconMode.Off, ShowLightbulbIconMode.OnCode, ShowLightbulbIconMode.On],\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.lightbulb.enabled.off', 'Disable the code action menu.'),\n\t\t\t\t\t\tnls.localize('editor.lightbulb.enabled.onCode', 'Show the code action menu when the cursor is on lines with code.'),\n\t\t\t\t\t\tnls.localize('editor.lightbulb.enabled.on', 'Show the code action menu when the cursor is on lines with code or on empty lines.'),\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('enabled', \"Enables the Code Action lightbulb in the editor.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorLightbulbOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorLightbulbOptions>;\n\t\treturn {\n\t\t\tenabled: stringSet(input.enabled, this.defaultValue.enabled, [ShowLightbulbIconMode.Off, ShowLightbulbIconMode.OnCode, ShowLightbulbIconMode.On])\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region stickyScroll\n\nexport interface IEditorStickyScrollOptions {\n\t/**\n\t * Enable the sticky scroll\n\t */\n\tenabled?: boolean;\n\t/**\n\t * Maximum number of sticky lines to show\n\t */\n\tmaxLineCount?: number;\n\t/**\n\t * Model to choose for sticky scroll by default\n\t */\n\tdefaultModel?: 'outlineModel' | 'foldingProviderModel' | 'indentationModel';\n\t/**\n\t * Define whether to scroll sticky scroll with editor horizontal scrollbae\n\t */\n\tscrollWithEditor?: boolean;\n}\n\n/**\n * @internal\n */\nexport type EditorStickyScrollOptions = Readonly<Required<IEditorStickyScrollOptions>>;\n\nclass EditorStickyScroll extends BaseEditorOption<EditorOption.stickyScroll, IEditorStickyScrollOptions, EditorStickyScrollOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorStickyScrollOptions = { enabled: true, maxLineCount: 5, defaultModel: 'outlineModel', scrollWithEditor: true };\n\t\tsuper(\n\t\t\tEditorOption.stickyScroll, 'stickyScroll', defaults,\n\t\t\t{\n\t\t\t\t'editor.stickyScroll.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('editor.stickyScroll.enabled', \"Shows the nested current scopes during the scroll at the top of the editor.\")\n\t\t\t\t},\n\t\t\t\t'editor.stickyScroll.maxLineCount': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.maxLineCount,\n\t\t\t\t\tminimum: 1,\n\t\t\t\t\tmaximum: 20,\n\t\t\t\t\tdescription: nls.localize('editor.stickyScroll.maxLineCount', \"Defines the maximum number of sticky lines to show.\")\n\t\t\t\t},\n\t\t\t\t'editor.stickyScroll.defaultModel': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['outlineModel', 'foldingProviderModel', 'indentationModel'],\n\t\t\t\t\tdefault: defaults.defaultModel,\n\t\t\t\t\tdescription: nls.localize('editor.stickyScroll.defaultModel', \"Defines the model to use for determining which lines to stick. If the outline model does not exist, it will fall back on the folding provider model which falls back on the indentation model. This order is respected in all three cases.\")\n\t\t\t\t},\n\t\t\t\t'editor.stickyScroll.scrollWithEditor': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.scrollWithEditor,\n\t\t\t\t\tdescription: nls.localize('editor.stickyScroll.scrollWithEditor', \"Enable scrolling of Sticky Scroll with the editor's horizontal scrollbar.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorStickyScrollOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorStickyScrollOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tmaxLineCount: EditorIntOption.clampedInt(input.maxLineCount, this.defaultValue.maxLineCount, 1, 20),\n\t\t\tdefaultModel: stringSet<'outlineModel' | 'foldingProviderModel' | 'indentationModel'>(input.defaultModel, this.defaultValue.defaultModel, ['outlineModel', 'foldingProviderModel', 'indentationModel']),\n\t\t\tscrollWithEditor: boolean(input.scrollWithEditor, this.defaultValue.scrollWithEditor)\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region inlayHints\n\n/**\n * Configuration options for editor inlayHints\n */\nexport interface IEditorInlayHintsOptions {\n\t/**\n\t * Enable the inline hints.\n\t * Defaults to true.\n\t */\n\tenabled?: 'on' | 'off' | 'offUnlessPressed' | 'onUnlessPressed';\n\n\t/**\n\t * Font size of inline hints.\n\t * Default to 90% of the editor font size.\n\t */\n\tfontSize?: number;\n\n\t/**\n\t * Font family of inline hints.\n\t * Defaults to editor font family.\n\t */\n\tfontFamily?: string;\n\n\t/**\n\t * Enables the padding around the inlay hint.\n\t * Defaults to false.\n\t */\n\tpadding?: boolean;\n\n\t/**\n\t * Maximum length for inlay hints per line\n\t * Set to 0 to have an unlimited length.\n\t */\n\tmaximumLength?: number;\n}\n\n/**\n * @internal\n */\nexport type EditorInlayHintsOptions = Readonly<Required<IEditorInlayHintsOptions>>;\n\nclass EditorInlayHints extends BaseEditorOption<EditorOption.inlayHints, IEditorInlayHintsOptions, EditorInlayHintsOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorInlayHintsOptions = { enabled: 'on', fontSize: 0, fontFamily: '', padding: false, maximumLength: 43 };\n\t\tsuper(\n\t\t\tEditorOption.inlayHints, 'inlayHints', defaults,\n\t\t\t{\n\t\t\t\t'editor.inlayHints.enabled': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('inlayHints.enable', \"Enables the inlay hints in the editor.\"),\n\t\t\t\t\tenum: ['on', 'onUnlessPressed', 'offUnlessPressed', 'off'],\n\t\t\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.inlayHints.on', \"Inlay hints are enabled\"),\n\t\t\t\t\t\tnls.localize('editor.inlayHints.onUnlessPressed', \"Inlay hints are showing by default and hide when holding {0}\", platform.isMacintosh ? `Ctrl+Option` : `Ctrl+Alt`),\n\t\t\t\t\t\tnls.localize('editor.inlayHints.offUnlessPressed', \"Inlay hints are hidden by default and show when holding {0}\", platform.isMacintosh ? `Ctrl+Option` : `Ctrl+Alt`),\n\t\t\t\t\t\tnls.localize('editor.inlayHints.off', \"Inlay hints are disabled\"),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t'editor.inlayHints.fontSize': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.fontSize,\n\t\t\t\t\tmarkdownDescription: nls.localize('inlayHints.fontSize', \"Controls font size of inlay hints in the editor. As default the {0} is used when the configured value is less than {1} or greater than the editor font size.\", '`#editor.fontSize#`', '`5`')\n\t\t\t\t},\n\t\t\t\t'editor.inlayHints.fontFamily': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.fontFamily,\n\t\t\t\t\tmarkdownDescription: nls.localize('inlayHints.fontFamily', \"Controls font family of inlay hints in the editor. When set to empty, the {0} is used.\", '`#editor.fontFamily#`')\n\t\t\t\t},\n\t\t\t\t'editor.inlayHints.padding': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.padding,\n\t\t\t\t\tdescription: nls.localize('inlayHints.padding', \"Enables the padding around the inlay hints in the editor.\")\n\t\t\t\t},\n\t\t\t\t'editor.inlayHints.maximumLength': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.maximumLength,\n\t\t\t\t\tmarkdownDescription: nls.localize('inlayHints.maximumLength', \"Maximum overall length of inlay hints, for a single line, before they get truncated by the editor. Set to `0` to never truncate\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorInlayHintsOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorInlayHintsOptions>;\n\t\tif (typeof input.enabled === 'boolean') {\n\t\t\tinput.enabled = input.enabled ? 'on' : 'off';\n\t\t}\n\t\treturn {\n\t\t\tenabled: stringSet<'on' | 'off' | 'offUnlessPressed' | 'onUnlessPressed'>(input.enabled, this.defaultValue.enabled, ['on', 'off', 'offUnlessPressed', 'onUnlessPressed']),\n\t\t\tfontSize: EditorIntOption.clampedInt(input.fontSize, this.defaultValue.fontSize, 0, 100),\n\t\t\tfontFamily: EditorStringOption.string(input.fontFamily, this.defaultValue.fontFamily),\n\t\t\tpadding: boolean(input.padding, this.defaultValue.padding),\n\t\t\tmaximumLength: EditorIntOption.clampedInt(input.maximumLength, this.defaultValue.maximumLength, 0, Number.MAX_SAFE_INTEGER),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region lineDecorationsWidth\n\nclass EditorLineDecorationsWidth extends BaseEditorOption<EditorOption.lineDecorationsWidth, number | string, number> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.lineDecorationsWidth, 'lineDecorationsWidth', 10);\n\t}\n\n\tpublic validate(input: unknown): number {\n\t\tif (typeof input === 'string' && /^\\d+(\\.\\d+)?ch$/.test(input)) {\n\t\t\tconst multiple = parseFloat(input.substring(0, input.length - 2));\n\t\t\treturn -multiple; // negative numbers signal a multiple\n\t\t} else {\n\t\t\treturn EditorIntOption.clampedInt(input, this.defaultValue, 0, 1000);\n\t\t}\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: number): number {\n\t\tif (value < 0) {\n\t\t\t// negative numbers signal a multiple\n\t\t\treturn EditorIntOption.clampedInt(-value * env.fontInfo.typicalHalfwidthCharacterWidth, this.defaultValue, 0, 1000);\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t}\n}\n\n//#endregion\n\n//#region lineHeight\n\nclass EditorLineHeight extends EditorFloatOption<EditorOption.lineHeight> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.lineHeight, 'lineHeight',\n\t\t\tEDITOR_FONT_DEFAULTS.lineHeight,\n\t\t\tx => EditorFloatOption.clamp(x, 0, 150),\n\t\t\t{ markdownDescription: nls.localize('lineHeight', \"Controls the line height. \\n - Use 0 to automatically compute the line height from the font size.\\n - Values between 0 and 8 will be used as a multiplier with the font size.\\n - Values greater than or equal to 8 will be used as effective values.\") },\n\t\t\t0,\n\t\t\t150\n\t\t);\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: number): number {\n\t\t// The lineHeight is computed from the fontSize if it is 0.\n\t\t// Moreover, the final lineHeight respects the editor zoom level.\n\t\t// So take the result from env.fontInfo\n\t\treturn env.fontInfo.lineHeight;\n\t}\n}\n\n//#endregion\n\n//#region minimap\n\n/**\n * Configuration options for editor minimap\n */\nexport interface IEditorMinimapOptions {\n\t/**\n\t * Enable the rendering of the minimap.\n\t * Defaults to true.\n\t */\n\tenabled?: boolean;\n\t/**\n\t * Control the rendering of minimap.\n\t */\n\tautohide?: 'none' | 'mouseover' | 'scroll';\n\t/**\n\t * Control the side of the minimap in editor.\n\t * Defaults to 'right'.\n\t */\n\tside?: 'right' | 'left';\n\t/**\n\t * Control the minimap rendering mode.\n\t * Defaults to 'actual'.\n\t */\n\tsize?: 'proportional' | 'fill' | 'fit';\n\t/**\n\t * Control the rendering of the minimap slider.\n\t * Defaults to 'mouseover'.\n\t */\n\tshowSlider?: 'always' | 'mouseover';\n\t/**\n\t * Render the actual text on a line (as opposed to color blocks).\n\t * Defaults to true.\n\t */\n\trenderCharacters?: boolean;\n\t/**\n\t * Limit the width of the minimap to render at most a certain number of columns.\n\t * Defaults to 120.\n\t */\n\tmaxColumn?: number;\n\t/**\n\t * Relative size of the font in the minimap. Defaults to 1.\n\t */\n\tscale?: number;\n\t/**\n\t * Whether to show named regions as section headers. Defaults to true.\n\t */\n\tshowRegionSectionHeaders?: boolean;\n\t/**\n\t * Whether to show MARK: comments as section headers. Defaults to true.\n\t */\n\tshowMarkSectionHeaders?: boolean;\n\t/**\n\t * When specified, is used to create a custom section header parser regexp.\n\t * Must contain a match group named 'label' (written as (?<label>.+)) that encapsulates the section header.\n\t * Optionally can include another match group named 'separator'.\n\t * To match multi-line headers like:\n\t * // ==========\n\t * // My Section\n\t * // ==========\n\t * Use a pattern like: ^={3,}\\n^\\/\\/ *(?<label>[^\\n]*?)\\n^={3,}$\n\t */\n\tmarkSectionHeaderRegex?: string;\n\t/**\n\t * Font size of section headers. Defaults to 9.\n\t */\n\tsectionHeaderFontSize?: number;\n\t/**\n\t * Spacing between the section header characters (in CSS px). Defaults to 1.\n\t */\n\tsectionHeaderLetterSpacing?: number;\n}\n\n/**\n * @internal\n */\nexport type EditorMinimapOptions = Readonly<Required<IEditorMinimapOptions>>;\n\nclass EditorMinimap extends BaseEditorOption<EditorOption.minimap, IEditorMinimapOptions, EditorMinimapOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorMinimapOptions = {\n\t\t\tenabled: true,\n\t\t\tsize: 'proportional',\n\t\t\tside: 'right',\n\t\t\tshowSlider: 'mouseover',\n\t\t\tautohide: 'none',\n\t\t\trenderCharacters: true,\n\t\t\tmaxColumn: 120,\n\t\t\tscale: 1,\n\t\t\tshowRegionSectionHeaders: true,\n\t\t\tshowMarkSectionHeaders: true,\n\t\t\tmarkSectionHeaderRegex: '\\\\bMARK:\\\\s*(?<separator>\\-?)\\\\s*(?<label>.*)$',\n\t\t\tsectionHeaderFontSize: 9,\n\t\t\tsectionHeaderLetterSpacing: 1,\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.minimap, 'minimap', defaults,\n\t\t\t{\n\t\t\t\t'editor.minimap.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('minimap.enabled', \"Controls whether the minimap is shown.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.autohide': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['none', 'mouseover', 'scroll'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('minimap.autohide.none', \"The minimap is always shown.\"),\n\t\t\t\t\t\tnls.localize('minimap.autohide.mouseover', \"The minimap is hidden when mouse is not over the minimap and shown when mouse is over the minimap.\"),\n\t\t\t\t\t\tnls.localize('minimap.autohide.scroll', \"The minimap is only shown when the editor is scrolled\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.autohide,\n\t\t\t\t\tdescription: nls.localize('minimap.autohide', \"Controls whether the minimap is hidden automatically.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.size': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['proportional', 'fill', 'fit'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('minimap.size.proportional', \"The minimap has the same size as the editor contents (and might scroll).\"),\n\t\t\t\t\t\tnls.localize('minimap.size.fill', \"The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling).\"),\n\t\t\t\t\t\tnls.localize('minimap.size.fit', \"The minimap will shrink as necessary to never be larger than the editor (no scrolling).\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.size,\n\t\t\t\t\tdescription: nls.localize('minimap.size', \"Controls the size of the minimap.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.side': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['left', 'right'],\n\t\t\t\t\tdefault: defaults.side,\n\t\t\t\t\tdescription: nls.localize('minimap.side', \"Controls the side where to render the minimap.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.showSlider': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['always', 'mouseover'],\n\t\t\t\t\tdefault: defaults.showSlider,\n\t\t\t\t\tdescription: nls.localize('minimap.showSlider', \"Controls when the minimap slider is shown.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.scale': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.scale,\n\t\t\t\t\tminimum: 1,\n\t\t\t\t\tmaximum: 3,\n\t\t\t\t\tenum: [1, 2, 3],\n\t\t\t\t\tdescription: nls.localize('minimap.scale', \"Scale of content drawn in the minimap: 1, 2 or 3.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.renderCharacters': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.renderCharacters,\n\t\t\t\t\tdescription: nls.localize('minimap.renderCharacters', \"Render the actual characters on a line as opposed to color blocks.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.maxColumn': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.maxColumn,\n\t\t\t\t\tdescription: nls.localize('minimap.maxColumn', \"Limit the width of the minimap to render at most a certain number of columns.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.showRegionSectionHeaders': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.showRegionSectionHeaders,\n\t\t\t\t\tdescription: nls.localize('minimap.showRegionSectionHeaders', \"Controls whether named regions are shown as section headers in the minimap.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.showMarkSectionHeaders': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.showMarkSectionHeaders,\n\t\t\t\t\tdescription: nls.localize('minimap.showMarkSectionHeaders', \"Controls whether MARK: comments are shown as section headers in the minimap.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.markSectionHeaderRegex': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.markSectionHeaderRegex,\n\t\t\t\t\tdescription: nls.localize('minimap.markSectionHeaderRegex', \"Defines the regular expression used to find section headers in comments. The regex must contain a named match group `label` (written as `(?<label>.+)`) that encapsulates the section header, otherwise it will not work. Optionally you can include another match group named `separator`. Use \\\\n in the pattern to match multi-line headers.\"),\n\t\t\t\t},\n\t\t\t\t'editor.minimap.sectionHeaderFontSize': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.sectionHeaderFontSize,\n\t\t\t\t\tdescription: nls.localize('minimap.sectionHeaderFontSize', \"Controls the font size of section headers in the minimap.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.sectionHeaderLetterSpacing': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.sectionHeaderLetterSpacing,\n\t\t\t\t\tdescription: nls.localize('minimap.sectionHeaderLetterSpacing', \"Controls the amount of space (in pixels) between characters of section header. This helps the readability of the header in small font sizes.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorMinimapOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorMinimapOptions>;\n\n\t\t// Validate mark section header regex\n\t\tlet markSectionHeaderRegex = this.defaultValue.markSectionHeaderRegex;\n\t\tconst inputRegex = input.markSectionHeaderRegex;\n\t\tif (typeof inputRegex === 'string') {\n\t\t\ttry {\n\t\t\t\tnew RegExp(inputRegex, 'd');\n\t\t\t\tmarkSectionHeaderRegex = inputRegex;\n\t\t\t} catch { }\n\t\t}\n\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tautohide: stringSet<'none' | 'mouseover' | 'scroll'>(input.autohide, this.defaultValue.autohide, ['none', 'mouseover', 'scroll']),\n\t\t\tsize: stringSet<'proportional' | 'fill' | 'fit'>(input.size, this.defaultValue.size, ['proportional', 'fill', 'fit']),\n\t\t\tside: stringSet<'right' | 'left'>(input.side, this.defaultValue.side, ['right', 'left']),\n\t\t\tshowSlider: stringSet<'always' | 'mouseover'>(input.showSlider, this.defaultValue.showSlider, ['always', 'mouseover']),\n\t\t\trenderCharacters: boolean(input.renderCharacters, this.defaultValue.renderCharacters),\n\t\t\tscale: EditorIntOption.clampedInt(input.scale, 1, 1, 3),\n\t\t\tmaxColumn: EditorIntOption.clampedInt(input.maxColumn, this.defaultValue.maxColumn, 1, 10000),\n\t\t\tshowRegionSectionHeaders: boolean(input.showRegionSectionHeaders, this.defaultValue.showRegionSectionHeaders),\n\t\t\tshowMarkSectionHeaders: boolean(input.showMarkSectionHeaders, this.defaultValue.showMarkSectionHeaders),\n\t\t\tmarkSectionHeaderRegex: markSectionHeaderRegex,\n\t\t\tsectionHeaderFontSize: EditorFloatOption.clamp(EditorFloatOption.float(input.sectionHeaderFontSize, this.defaultValue.sectionHeaderFontSize), 4, 32),\n\t\t\tsectionHeaderLetterSpacing: EditorFloatOption.clamp(EditorFloatOption.float(input.sectionHeaderLetterSpacing, this.defaultValue.sectionHeaderLetterSpacing), 0, 5),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region multiCursorModifier\n\nfunction _multiCursorModifierFromString(multiCursorModifier: 'ctrlCmd' | 'alt'): 'altKey' | 'metaKey' | 'ctrlKey' {\n\tif (multiCursorModifier === 'ctrlCmd') {\n\t\treturn (platform.isMacintosh ? 'metaKey' : 'ctrlKey');\n\t}\n\treturn 'altKey';\n}\n\n//#endregion\n\n//#region padding\n\n/**\n * Configuration options for editor padding\n */\nexport interface IEditorPaddingOptions {\n\t/**\n\t * Spacing between top edge of editor and first line.\n\t */\n\ttop?: number;\n\t/**\n\t * Spacing between bottom edge of editor and last line.\n\t */\n\tbottom?: number;\n}\n\n/**\n * @internal\n */\nexport type InternalEditorPaddingOptions = Readonly<Required<IEditorPaddingOptions>>;\n\nclass EditorPadding extends BaseEditorOption<EditorOption.padding, IEditorPaddingOptions, InternalEditorPaddingOptions> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.padding, 'padding', { top: 0, bottom: 0 },\n\t\t\t{\n\t\t\t\t'editor.padding.top': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: 0,\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tmaximum: 1000,\n\t\t\t\t\tdescription: nls.localize('padding.top', \"Controls the amount of space between the top edge of the editor and the first line.\")\n\t\t\t\t},\n\t\t\t\t'editor.padding.bottom': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: 0,\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tmaximum: 1000,\n\t\t\t\t\tdescription: nls.localize('padding.bottom', \"Controls the amount of space between the bottom edge of the editor and the last line.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalEditorPaddingOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorPaddingOptions>;\n\n\t\treturn {\n\t\t\ttop: EditorIntOption.clampedInt(input.top, 0, 0, 1000),\n\t\t\tbottom: EditorIntOption.clampedInt(input.bottom, 0, 0, 1000)\n\t\t};\n\t}\n}\n//#endregion\n\n//#region parameterHints\n\n/**\n * Configuration options for parameter hints\n */\nexport interface IEditorParameterHintOptions {\n\t/**\n\t * Enable parameter hints.\n\t * Defaults to true.\n\t */\n\tenabled?: boolean;\n\t/**\n\t * Enable cycling of parameter hints.\n\t * Defaults to false.\n\t */\n\tcycle?: boolean;\n}\n\n/**\n * @internal\n */\nexport type InternalParameterHintOptions = Readonly<Required<IEditorParameterHintOptions>>;\n\nclass EditorParameterHints extends BaseEditorOption<EditorOption.parameterHints, IEditorParameterHintOptions, InternalParameterHintOptions> {\n\n\tconstructor() {\n\t\tconst defaults: InternalParameterHintOptions = {\n\t\t\tenabled: true,\n\t\t\tcycle: true\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.parameterHints, 'parameterHints', defaults,\n\t\t\t{\n\t\t\t\t'editor.parameterHints.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('parameterHints.enabled', \"Enables a pop-up that shows parameter documentation and type information as you type.\")\n\t\t\t\t},\n\t\t\t\t'editor.parameterHints.cycle': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.cycle,\n\t\t\t\t\tdescription: nls.localize('parameterHints.cycle', \"Controls whether the parameter hints menu cycles or closes when reaching the end of the list.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalParameterHintOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorParameterHintOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tcycle: boolean(input.cycle, this.defaultValue.cycle)\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region pixelRatio\n\nclass EditorPixelRatio extends ComputedEditorOption<EditorOption.pixelRatio, number> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.pixelRatio, 1);\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: number): number {\n\t\treturn env.pixelRatio;\n\t}\n}\n\n//#endregion\n\n//#region\n\nclass PlaceholderOption extends BaseEditorOption<EditorOption.placeholder, string | undefined, string | undefined> {\n\tconstructor() {\n\t\tsuper(EditorOption.placeholder, 'placeholder', undefined);\n\t}\n\n\tpublic validate(input: unknown): string | undefined {\n\t\tif (typeof input === 'undefined') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tif (typeof input === 'string') {\n\t\t\treturn input;\n\t\t}\n\t\treturn this.defaultValue;\n\t}\n}\n//#endregion\n\n//#region quickSuggestions\n\nexport type QuickSuggestionsValue = 'on' | 'inline' | 'off';\n\n/**\n * Configuration options for quick suggestions\n */\nexport interface IQuickSuggestionsOptions {\n\tother?: boolean | QuickSuggestionsValue;\n\tcomments?: boolean | QuickSuggestionsValue;\n\tstrings?: boolean | QuickSuggestionsValue;\n}\n\nexport interface InternalQuickSuggestionsOptions {\n\treadonly other: QuickSuggestionsValue;\n\treadonly comments: QuickSuggestionsValue;\n\treadonly strings: QuickSuggestionsValue;\n}\n\nclass EditorQuickSuggestions extends BaseEditorOption<EditorOption.quickSuggestions, boolean | IQuickSuggestionsOptions, InternalQuickSuggestionsOptions> {\n\n\tpublic override readonly defaultValue: InternalQuickSuggestionsOptions;\n\n\tconstructor() {\n\t\tconst defaults: InternalQuickSuggestionsOptions = {\n\t\t\tother: 'on',\n\t\t\tcomments: 'off',\n\t\t\tstrings: 'off'\n\t\t};\n\t\tconst types: IJSONSchema[] = [\n\t\t\t{ type: 'boolean' },\n\t\t\t{\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['on', 'inline', 'off'],\n\t\t\t\tenumDescriptions: [nls.localize('on', \"Quick suggestions show inside the suggest widget\"), nls.localize('inline', \"Quick suggestions show as ghost text\"), nls.localize('off', \"Quick suggestions are disabled\")]\n\t\t\t}\n\t\t];\n\t\tsuper(EditorOption.quickSuggestions, 'quickSuggestions', defaults, {\n\t\t\ttype: 'object',\n\t\t\tadditionalProperties: false,\n\t\t\tproperties: {\n\t\t\t\tstrings: {\n\t\t\t\t\tanyOf: types,\n\t\t\t\t\tdefault: defaults.strings,\n\t\t\t\t\tdescription: nls.localize('quickSuggestions.strings', \"Enable quick suggestions inside strings.\")\n\t\t\t\t},\n\t\t\t\tcomments: {\n\t\t\t\t\tanyOf: types,\n\t\t\t\t\tdefault: defaults.comments,\n\t\t\t\t\tdescription: nls.localize('quickSuggestions.comments', \"Enable quick suggestions inside comments.\")\n\t\t\t\t},\n\t\t\t\tother: {\n\t\t\t\t\tanyOf: types,\n\t\t\t\t\tdefault: defaults.other,\n\t\t\t\t\tdescription: nls.localize('quickSuggestions.other', \"Enable quick suggestions outside of strings and comments.\")\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: defaults,\n\t\t\tmarkdownDescription: nls.localize('quickSuggestions', \"Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget. Also be aware of the {0}-setting which controls if suggestions are triggered by special characters.\", '`#editor.suggestOnTriggerCharacters#`')\n\t\t});\n\t\tthis.defaultValue = defaults;\n\t}\n\n\tpublic validate(input: unknown): InternalQuickSuggestionsOptions {\n\t\tif (typeof input === 'boolean') {\n\t\t\t// boolean -> all on/off\n\t\t\tconst value = input ? 'on' : 'off';\n\t\t\treturn { comments: value, strings: value, other: value };\n\t\t}\n\t\tif (!input || typeof input !== 'object') {\n\t\t\t// invalid object\n\t\t\treturn this.defaultValue;\n\t\t}\n\n\t\tconst { other, comments, strings } = (<IQuickSuggestionsOptions>input);\n\t\tconst allowedValues: QuickSuggestionsValue[] = ['on', 'inline', 'off'];\n\t\tlet validatedOther: QuickSuggestionsValue;\n\t\tlet validatedComments: QuickSuggestionsValue;\n\t\tlet validatedStrings: QuickSuggestionsValue;\n\n\t\tif (typeof other === 'boolean') {\n\t\t\tvalidatedOther = other ? 'on' : 'off';\n\t\t} else {\n\t\t\tvalidatedOther = stringSet(other, this.defaultValue.other, allowedValues);\n\t\t}\n\t\tif (typeof comments === 'boolean') {\n\t\t\tvalidatedComments = comments ? 'on' : 'off';\n\t\t} else {\n\t\t\tvalidatedComments = stringSet(comments, this.defaultValue.comments, allowedValues);\n\t\t}\n\t\tif (typeof strings === 'boolean') {\n\t\t\tvalidatedStrings = strings ? 'on' : 'off';\n\t\t} else {\n\t\t\tvalidatedStrings = stringSet(strings, this.defaultValue.strings, allowedValues);\n\t\t}\n\t\treturn {\n\t\t\tother: validatedOther,\n\t\t\tcomments: validatedComments,\n\t\t\tstrings: validatedStrings\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region renderLineNumbers\n\nexport type LineNumbersType = 'on' | 'off' | 'relative' | 'interval' | ((lineNumber: number) => string);\n\nexport const enum RenderLineNumbersType {\n\tOff = 0,\n\tOn = 1,\n\tRelative = 2,\n\tInterval = 3,\n\tCustom = 4\n}\n\nexport interface InternalEditorRenderLineNumbersOptions {\n\treadonly renderType: RenderLineNumbersType;\n\treadonly renderFn: ((lineNumber: number) => string) | null;\n}\n\nclass EditorRenderLineNumbersOption extends BaseEditorOption<EditorOption.lineNumbers, LineNumbersType, InternalEditorRenderLineNumbersOptions> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.lineNumbers, 'lineNumbers', { renderType: RenderLineNumbersType.On, renderFn: null },\n\t\t\t{\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['off', 'on', 'relative', 'interval'],\n\t\t\t\tenumDescriptions: [\n\t\t\t\t\tnls.localize('lineNumbers.off', \"Line numbers are not rendered.\"),\n\t\t\t\t\tnls.localize('lineNumbers.on', \"Line numbers are rendered as absolute number.\"),\n\t\t\t\t\tnls.localize('lineNumbers.relative', \"Line numbers are rendered as distance in lines to cursor position.\"),\n\t\t\t\t\tnls.localize('lineNumbers.interval', \"Line numbers are rendered every 10 lines.\")\n\t\t\t\t],\n\t\t\t\tdefault: 'on',\n\t\t\t\tdescription: nls.localize('lineNumbers', \"Controls the display of line numbers.\")\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(lineNumbers: unknown): InternalEditorRenderLineNumbersOptions {\n\t\tlet renderType: RenderLineNumbersType = this.defaultValue.renderType;\n\t\tlet renderFn: ((lineNumber: number) => string) | null = this.defaultValue.renderFn;\n\n\t\tif (typeof lineNumbers !== 'undefined') {\n\t\t\tif (typeof lineNumbers === 'function') {\n\t\t\t\trenderType = RenderLineNumbersType.Custom;\n\t\t\t\trenderFn = lineNumbers as ((lineNumber: number) => string);\n\t\t\t} else if (lineNumbers === 'interval') {\n\t\t\t\trenderType = RenderLineNumbersType.Interval;\n\t\t\t} else if (lineNumbers === 'relative') {\n\t\t\t\trenderType = RenderLineNumbersType.Relative;\n\t\t\t} else if (lineNumbers === 'on') {\n\t\t\t\trenderType = RenderLineNumbersType.On;\n\t\t\t} else {\n\t\t\t\trenderType = RenderLineNumbersType.Off;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\trenderType,\n\t\t\trenderFn\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region renderValidationDecorations\n\n/**\n * @internal\n */\nexport function filterValidationDecorations(options: IComputedEditorOptions): boolean {\n\tconst renderValidationDecorations = options.get(EditorOption.renderValidationDecorations);\n\tif (renderValidationDecorations === 'editable') {\n\t\treturn options.get(EditorOption.readOnly);\n\t}\n\treturn renderValidationDecorations === 'on' ? false : true;\n}\n\n//#endregion\n\n//#region filterFontDecorations\n\n/**\n * @internal\n */\nexport function filterFontDecorations(options: IComputedEditorOptions): boolean {\n\treturn !options.get(EditorOption.effectiveAllowVariableFonts);\n}\n\n//#endregion\n\n//#region rulers\n\nexport interface IRulerOption {\n\treadonly column: number;\n\treadonly color: string | null;\n}\n\nclass EditorRulers extends BaseEditorOption<EditorOption.rulers, (number | IRulerOption)[], IRulerOption[]> {\n\n\tconstructor() {\n\t\tconst defaults: IRulerOption[] = [];\n\t\tconst columnSchema: IJSONSchema = { type: 'number', description: nls.localize('rulers.size', \"Number of monospace characters at which this editor ruler will render.\") };\n\t\tsuper(\n\t\t\tEditorOption.rulers, 'rulers', defaults,\n\t\t\t{\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\tcolumnSchema,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: [\n\t\t\t\t\t\t\t\t'object'\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tcolumn: columnSchema,\n\t\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\tdescription: nls.localize('rulers.color', \"Color of this editor ruler.\"),\n\t\t\t\t\t\t\t\t\tformat: 'color-hex'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\tdefault: defaults,\n\t\t\t\tdescription: nls.localize('rulers', \"Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.\")\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): IRulerOption[] {\n\t\tif (Array.isArray(input)) {\n\t\t\tconst rulers: IRulerOption[] = [];\n\t\t\tfor (const _element of input) {\n\t\t\t\tif (typeof _element === 'number') {\n\t\t\t\t\trulers.push({\n\t\t\t\t\t\tcolumn: EditorIntOption.clampedInt(_element, 0, 0, 10000),\n\t\t\t\t\t\tcolor: null\n\t\t\t\t\t});\n\t\t\t\t} else if (_element && typeof _element === 'object') {\n\t\t\t\t\tconst element = _element as IRulerOption;\n\t\t\t\t\trulers.push({\n\t\t\t\t\t\tcolumn: EditorIntOption.clampedInt(element.column, 0, 0, 10000),\n\t\t\t\t\t\tcolor: element.color\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\trulers.sort((a, b) => a.column - b.column);\n\t\t\treturn rulers;\n\t\t}\n\t\treturn this.defaultValue;\n\t}\n}\n\n//#endregion\n\n//#region readonly\n\n/**\n * Configuration options for readonly message\n */\nclass ReadonlyMessage extends BaseEditorOption<EditorOption.readOnlyMessage, IMarkdownString | undefined, IMarkdownString | undefined> {\n\tconstructor() {\n\t\tconst defaults = undefined;\n\n\t\tsuper(\n\t\t\tEditorOption.readOnlyMessage, 'readOnlyMessage', defaults\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): IMarkdownString | undefined {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\treturn _input as IMarkdownString;\n\t}\n}\n\n//#endregion\n\n//#region scrollbar\n\n/**\n * Configuration options for editor scrollbars\n */\nexport interface IEditorScrollbarOptions {\n\t/**\n\t * The size of arrows (if displayed).\n\t * Defaults to 11.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\tarrowSize?: number;\n\t/**\n\t * Render vertical scrollbar.\n\t * Defaults to 'auto'.\n\t */\n\tvertical?: 'auto' | 'visible' | 'hidden';\n\t/**\n\t * Render horizontal scrollbar.\n\t * Defaults to 'auto'.\n\t */\n\thorizontal?: 'auto' | 'visible' | 'hidden';\n\t/**\n\t * Cast horizontal and vertical shadows when the content is scrolled.\n\t * Defaults to true.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\tuseShadows?: boolean;\n\t/**\n\t * Render arrows at the top and bottom of the vertical scrollbar.\n\t * Defaults to false.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\tverticalHasArrows?: boolean;\n\t/**\n\t * Render arrows at the left and right of the horizontal scrollbar.\n\t * Defaults to false.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\thorizontalHasArrows?: boolean;\n\t/**\n\t * Listen to mouse wheel events and react to them by scrolling.\n\t * Defaults to true.\n\t */\n\thandleMouseWheel?: boolean;\n\t/**\n\t * Always consume mouse wheel events (always call preventDefault() and stopPropagation() on the browser events).\n\t * Defaults to true.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\talwaysConsumeMouseWheel?: boolean;\n\t/**\n\t * Height in pixels for the horizontal scrollbar.\n\t * Defaults to 12 (px).\n\t */\n\thorizontalScrollbarSize?: number;\n\t/**\n\t * Width in pixels for the vertical scrollbar.\n\t * Defaults to 14 (px).\n\t */\n\tverticalScrollbarSize?: number;\n\t/**\n\t * Width in pixels for the vertical slider.\n\t * Defaults to `verticalScrollbarSize`.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\tverticalSliderSize?: number;\n\t/**\n\t * Height in pixels for the horizontal slider.\n\t * Defaults to `horizontalScrollbarSize`.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\thorizontalSliderSize?: number;\n\t/**\n\t * Scroll gutter clicks move by page vs jump to position.\n\t * Defaults to false.\n\t */\n\tscrollByPage?: boolean;\n\n\t/**\n\t * When set, the horizontal scrollbar will not increase content height.\n\t * Defaults to false.\n\t */\n\tignoreHorizontalScrollbarInContentHeight?: boolean;\n}\n\nexport interface InternalEditorScrollbarOptions {\n\treadonly arrowSize: number;\n\treadonly vertical: ScrollbarVisibility;\n\treadonly horizontal: ScrollbarVisibility;\n\treadonly useShadows: boolean;\n\treadonly verticalHasArrows: boolean;\n\treadonly horizontalHasArrows: boolean;\n\treadonly handleMouseWheel: boolean;\n\treadonly alwaysConsumeMouseWheel: boolean;\n\treadonly horizontalScrollbarSize: number;\n\treadonly horizontalSliderSize: number;\n\treadonly verticalScrollbarSize: number;\n\treadonly verticalSliderSize: number;\n\treadonly scrollByPage: boolean;\n\treadonly ignoreHorizontalScrollbarInContentHeight: boolean;\n}\n\nfunction _scrollbarVisibilityFromString(visibility: unknown, defaultValue: ScrollbarVisibility): ScrollbarVisibility {\n\tif (typeof visibility !== 'string') {\n\t\treturn defaultValue;\n\t}\n\tswitch (visibility) {\n\t\tcase 'hidden': return ScrollbarVisibility.Hidden;\n\t\tcase 'visible': return ScrollbarVisibility.Visible;\n\t\tdefault: return ScrollbarVisibility.Auto;\n\t}\n}\n\nclass EditorScrollbar extends BaseEditorOption<EditorOption.scrollbar, IEditorScrollbarOptions, InternalEditorScrollbarOptions> {\n\n\tconstructor() {\n\t\tconst defaults: InternalEditorScrollbarOptions = {\n\t\t\tvertical: ScrollbarVisibility.Auto,\n\t\t\thorizontal: ScrollbarVisibility.Auto,\n\t\t\tarrowSize: 11,\n\t\t\tuseShadows: true,\n\t\t\tverticalHasArrows: false,\n\t\t\thorizontalHasArrows: false,\n\t\t\thorizontalScrollbarSize: 12,\n\t\t\thorizontalSliderSize: 12,\n\t\t\tverticalScrollbarSize: 14,\n\t\t\tverticalSliderSize: 14,\n\t\t\thandleMouseWheel: true,\n\t\t\talwaysConsumeMouseWheel: true,\n\t\t\tscrollByPage: false,\n\t\t\tignoreHorizontalScrollbarInContentHeight: false,\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.scrollbar, 'scrollbar', defaults,\n\t\t\t{\n\t\t\t\t'editor.scrollbar.vertical': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['auto', 'visible', 'hidden'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('scrollbar.vertical.auto', \"The vertical scrollbar will be visible only when necessary.\"),\n\t\t\t\t\t\tnls.localize('scrollbar.vertical.visible', \"The vertical scrollbar will always be visible.\"),\n\t\t\t\t\t\tnls.localize('scrollbar.vertical.fit', \"The vertical scrollbar will always be hidden.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: 'auto',\n\t\t\t\t\tdescription: nls.localize('scrollbar.vertical', \"Controls the visibility of the vertical scrollbar.\")\n\t\t\t\t},\n\t\t\t\t'editor.scrollbar.horizontal': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['auto', 'visible', 'hidden'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('scrollbar.horizontal.auto', \"The horizontal scrollbar will be visible only when necessary.\"),\n\t\t\t\t\t\tnls.localize('scrollbar.horizontal.visible', \"The horizontal scrollbar will always be visible.\"),\n\t\t\t\t\t\tnls.localize('scrollbar.horizontal.fit', \"The horizontal scrollbar will always be hidden.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: 'auto',\n\t\t\t\t\tdescription: nls.localize('scrollbar.horizontal', \"Controls the visibility of the horizontal scrollbar.\")\n\t\t\t\t},\n\t\t\t\t'editor.scrollbar.verticalScrollbarSize': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.verticalScrollbarSize,\n\t\t\t\t\tdescription: nls.localize('scrollbar.verticalScrollbarSize', \"The width of the vertical scrollbar.\")\n\t\t\t\t},\n\t\t\t\t'editor.scrollbar.horizontalScrollbarSize': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.horizontalScrollbarSize,\n\t\t\t\t\tdescription: nls.localize('scrollbar.horizontalScrollbarSize', \"The height of the horizontal scrollbar.\")\n\t\t\t\t},\n\t\t\t\t'editor.scrollbar.scrollByPage': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.scrollByPage,\n\t\t\t\t\tdescription: nls.localize('scrollbar.scrollByPage', \"Controls whether clicks scroll by page or jump to click position.\")\n\t\t\t\t},\n\t\t\t\t'editor.scrollbar.ignoreHorizontalScrollbarInContentHeight': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.ignoreHorizontalScrollbarInContentHeight,\n\t\t\t\t\tdescription: nls.localize('scrollbar.ignoreHorizontalScrollbarInContentHeight', \"When set, the horizontal scrollbar will not increase the size of the editor's content.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalEditorScrollbarOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorScrollbarOptions>;\n\t\tconst horizontalScrollbarSize = EditorIntOption.clampedInt(input.horizontalScrollbarSize, this.defaultValue.horizontalScrollbarSize, 0, 1000);\n\t\tconst verticalScrollbarSize = EditorIntOption.clampedInt(input.verticalScrollbarSize, this.defaultValue.verticalScrollbarSize, 0, 1000);\n\t\treturn {\n\t\t\tarrowSize: EditorIntOption.clampedInt(input.arrowSize, this.defaultValue.arrowSize, 0, 1000),\n\t\t\tvertical: _scrollbarVisibilityFromString(input.vertical, this.defaultValue.vertical),\n\t\t\thorizontal: _scrollbarVisibilityFromString(input.horizontal, this.defaultValue.horizontal),\n\t\t\tuseShadows: boolean(input.useShadows, this.defaultValue.useShadows),\n\t\t\tverticalHasArrows: boolean(input.verticalHasArrows, this.defaultValue.verticalHasArrows),\n\t\t\thorizontalHasArrows: boolean(input.horizontalHasArrows, this.defaultValue.horizontalHasArrows),\n\t\t\thandleMouseWheel: boolean(input.handleMouseWheel, this.defaultValue.handleMouseWheel),\n\t\t\talwaysConsumeMouseWheel: boolean(input.alwaysConsumeMouseWheel, this.defaultValue.alwaysConsumeMouseWheel),\n\t\t\thorizontalScrollbarSize: horizontalScrollbarSize,\n\t\t\thorizontalSliderSize: EditorIntOption.clampedInt(input.horizontalSliderSize, horizontalScrollbarSize, 0, 1000),\n\t\t\tverticalScrollbarSize: verticalScrollbarSize,\n\t\t\tverticalSliderSize: EditorIntOption.clampedInt(input.verticalSliderSize, verticalScrollbarSize, 0, 1000),\n\t\t\tscrollByPage: boolean(input.scrollByPage, this.defaultValue.scrollByPage),\n\t\t\tignoreHorizontalScrollbarInContentHeight: boolean(input.ignoreHorizontalScrollbarInContentHeight, this.defaultValue.ignoreHorizontalScrollbarInContentHeight),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region UnicodeHighlight\n\nexport type InUntrustedWorkspace = 'inUntrustedWorkspace';\n\n/**\n * @internal\n*/\nexport const inUntrustedWorkspace: InUntrustedWorkspace = 'inUntrustedWorkspace';\n\n/**\n * Configuration options for unicode highlighting.\n */\nexport interface IUnicodeHighlightOptions {\n\n\t/**\n\t * Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.\n\t */\n\tnonBasicASCII?: boolean | InUntrustedWorkspace;\n\n\t/**\n\t * Controls whether characters that just reserve space or have no width at all are highlighted.\n\t */\n\tinvisibleCharacters?: boolean;\n\n\t/**\n\t * Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.\n\t */\n\tambiguousCharacters?: boolean;\n\n\t/**\n\t * Controls whether characters in comments should also be subject to unicode highlighting.\n\t */\n\tincludeComments?: boolean | InUntrustedWorkspace;\n\n\t/**\n\t * Controls whether characters in strings should also be subject to unicode highlighting.\n\t */\n\tincludeStrings?: boolean | InUntrustedWorkspace;\n\n\t/**\n\t * Defines allowed characters that are not being highlighted.\n\t */\n\tallowedCharacters?: Record<string, true>;\n\n\t/**\n\t * Unicode characters that are common in allowed locales are not being highlighted.\n\t */\n\tallowedLocales?: Record<string | '_os' | '_vscode', true>;\n}\n\n/**\n * @internal\n */\nexport type InternalUnicodeHighlightOptions = Required<Readonly<IUnicodeHighlightOptions>>;\n\n/**\n * @internal\n */\nexport const unicodeHighlightConfigKeys = {\n\tallowedCharacters: 'editor.unicodeHighlight.allowedCharacters',\n\tinvisibleCharacters: 'editor.unicodeHighlight.invisibleCharacters',\n\tnonBasicASCII: 'editor.unicodeHighlight.nonBasicASCII',\n\tambiguousCharacters: 'editor.unicodeHighlight.ambiguousCharacters',\n\tincludeComments: 'editor.unicodeHighlight.includeComments',\n\tincludeStrings: 'editor.unicodeHighlight.includeStrings',\n\tallowedLocales: 'editor.unicodeHighlight.allowedLocales',\n};\n\nclass UnicodeHighlight extends BaseEditorOption<EditorOption.unicodeHighlighting, IUnicodeHighlightOptions, InternalUnicodeHighlightOptions> {\n\tconstructor() {\n\t\tconst defaults: InternalUnicodeHighlightOptions = {\n\t\t\tnonBasicASCII: inUntrustedWorkspace,\n\t\t\tinvisibleCharacters: true,\n\t\t\tambiguousCharacters: true,\n\t\t\tincludeComments: inUntrustedWorkspace,\n\t\t\tincludeStrings: true,\n\t\t\tallowedCharacters: {},\n\t\t\tallowedLocales: { _os: true, _vscode: true },\n\t\t};\n\n\t\tsuper(\n\t\t\tEditorOption.unicodeHighlighting, 'unicodeHighlight', defaults,\n\t\t\t{\n\t\t\t\t[unicodeHighlightConfigKeys.nonBasicASCII]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, false, inUntrustedWorkspace],\n\t\t\t\t\tdefault: defaults.nonBasicASCII,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.nonBasicASCII', \"Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.\")\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.invisibleCharacters]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.invisibleCharacters,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.invisibleCharacters', \"Controls whether characters that just reserve space or have no width at all are highlighted.\")\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.ambiguousCharacters]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.ambiguousCharacters,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.ambiguousCharacters', \"Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.\")\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.includeComments]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, false, inUntrustedWorkspace],\n\t\t\t\t\tdefault: defaults.includeComments,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.includeComments', \"Controls whether characters in comments should also be subject to Unicode highlighting.\")\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.includeStrings]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, false, inUntrustedWorkspace],\n\t\t\t\t\tdefault: defaults.includeStrings,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.includeStrings', \"Controls whether characters in strings should also be subject to Unicode highlighting.\")\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.allowedCharacters]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tdefault: defaults.allowedCharacters,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.allowedCharacters', \"Defines allowed characters that are not being highlighted.\"),\n\t\t\t\t\tadditionalProperties: {\n\t\t\t\t\t\ttype: 'boolean'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.allowedLocales]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tadditionalProperties: {\n\t\t\t\t\t\ttype: 'boolean'\n\t\t\t\t\t},\n\t\t\t\t\tdefault: defaults.allowedLocales,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.allowedLocales', \"Unicode characters that are common in allowed locales are not being highlighted.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic override applyUpdate(value: Required<Readonly<IUnicodeHighlightOptions>> | undefined, update: Required<Readonly<IUnicodeHighlightOptions>>): ApplyUpdateResult<Required<Readonly<IUnicodeHighlightOptions>>> {\n\t\tlet didChange = false;\n\t\tif (update.allowedCharacters && value) {\n\t\t\t// Treat allowedCharacters atomically\n\t\t\tif (!objects.equals(value.allowedCharacters, update.allowedCharacters)) {\n\t\t\t\tvalue = { ...value, allowedCharacters: update.allowedCharacters };\n\t\t\t\tdidChange = true;\n\t\t\t}\n\t\t}\n\t\tif (update.allowedLocales && value) {\n\t\t\t// Treat allowedLocales atomically\n\t\t\tif (!objects.equals(value.allowedLocales, update.allowedLocales)) {\n\t\t\t\tvalue = { ...value, allowedLocales: update.allowedLocales };\n\t\t\t\tdidChange = true;\n\t\t\t}\n\t\t}\n\n\t\tconst result = super.applyUpdate(value, update);\n\t\tif (didChange) {\n\t\t\treturn new ApplyUpdateResult(result.newValue, true);\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic validate(_input: unknown): InternalUnicodeHighlightOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IUnicodeHighlightOptions>;\n\t\treturn {\n\t\t\tnonBasicASCII: primitiveSet<boolean | InUntrustedWorkspace>(input.nonBasicASCII, inUntrustedWorkspace, [true, false, inUntrustedWorkspace]),\n\t\t\tinvisibleCharacters: boolean(input.invisibleCharacters, this.defaultValue.invisibleCharacters),\n\t\t\tambiguousCharacters: boolean(input.ambiguousCharacters, this.defaultValue.ambiguousCharacters),\n\t\t\tincludeComments: primitiveSet<boolean | InUntrustedWorkspace>(input.includeComments, inUntrustedWorkspace, [true, false, inUntrustedWorkspace]),\n\t\t\tincludeStrings: primitiveSet<boolean | InUntrustedWorkspace>(input.includeStrings, inUntrustedWorkspace, [true, false, inUntrustedWorkspace]),\n\t\t\tallowedCharacters: this.validateBooleanMap(input.allowedCharacters, this.defaultValue.allowedCharacters),\n\t\t\tallowedLocales: this.validateBooleanMap(input.allowedLocales, this.defaultValue.allowedLocales),\n\t\t};\n\t}\n\n\tprivate validateBooleanMap(map: unknown, defaultValue: Record<string, true>): Record<string, true> {\n\t\tif ((typeof map !== 'object') || !map) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\tconst result: Record<string, true> = {};\n\t\tfor (const [key, value] of Object.entries(map)) {\n\t\t\tif (value === true) {\n\t\t\t\tresult[key] = true;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}\n\n//#endregion\n\n//#region inlineSuggest\n\nexport interface IInlineSuggestOptions {\n\t/**\n\t * Enable or disable the rendering of automatic inline completions.\n\t*/\n\tenabled?: boolean;\n\n\t/**\n\t * Configures the mode.\n\t * Use `prefix` to only show ghost text if the text to replace is a prefix of the suggestion text.\n\t * Use `subword` to only show ghost text if the replace text is a subword of the suggestion text.\n\t * Use `subwordSmart` to only show ghost text if the replace text is a subword of the suggestion text, but the subword must start after the cursor position.\n\t * Defaults to `prefix`.\n\t*/\n\tmode?: 'prefix' | 'subword' | 'subwordSmart';\n\n\tshowToolbar?: 'always' | 'onHover' | 'never';\n\n\tsyntaxHighlightingEnabled?: boolean;\n\n\tsuppressSuggestions?: boolean;\n\n\tminShowDelay?: number;\n\tsuppressInSnippetMode?: boolean;\n\t/**\n\t * Does not clear active inline suggestions when the editor loses focus.\n\t */\n\tkeepOnBlur?: boolean;\n\n\t/**\n\t * Font family for inline suggestions.\n\t */\n\tfontFamily?: string | 'default';\n\n\tedits?: {\n\t\tallowCodeShifting?: 'always' | 'horizontal' | 'never';\n\n\t\trenderSideBySide?: 'never' | 'auto';\n\n\t\tshowCollapsed?: boolean;\n\n\t\t/**\n\t\t* @internal\n\t\t*/\n\t\tenabled?: boolean;\n\t};\n\n\t/**\n\t* @internal\n\t*/\n\ttriggerCommandOnProviderChange?: boolean;\n\n\t/**\n\t* @internal\n\t*/\n\texperimental?: {\n\t\t/**\n\t\t* @internal\n\t\t*/\n\t\tsuppressInlineSuggestions?: string;\n\n\t\t/**\n\t\t* @internal\n\t\t*/\n\t\temptyResponseInformation?: boolean;\n\n\t\tshowOnSuggestConflict?: 'always' | 'never' | 'whenSuggestListIsIncomplete';\n\t};\n}\n\ntype RequiredRecursive<T> = {\n\t[P in keyof T]-?: T[P] extends object | undefined ? RequiredRecursive<T[P]> : T[P];\n};\n\n/**\n * @internal\n */\nexport type InternalInlineSuggestOptions = Readonly<RequiredRecursive<IInlineSuggestOptions>>;\n\n/**\n * Configuration options for inline suggestions\n */\nclass InlineEditorSuggest extends BaseEditorOption<EditorOption.inlineSuggest, IInlineSuggestOptions, InternalInlineSuggestOptions> {\n\tconstructor() {\n\t\tconst defaults: InternalInlineSuggestOptions = {\n\t\t\tenabled: true,\n\t\t\tmode: 'subwordSmart',\n\t\t\tshowToolbar: 'onHover',\n\t\t\tsuppressSuggestions: false,\n\t\t\tkeepOnBlur: false,\n\t\t\tfontFamily: 'default',\n\t\t\tsyntaxHighlightingEnabled: true,\n\t\t\tminShowDelay: 0,\n\t\t\tsuppressInSnippetMode: true,\n\t\t\tedits: {\n\t\t\t\tenabled: true,\n\t\t\t\tshowCollapsed: false,\n\t\t\t\trenderSideBySide: 'auto',\n\t\t\t\tallowCodeShifting: 'always',\n\t\t\t},\n\t\t\ttriggerCommandOnProviderChange: true,\n\t\t\texperimental: {\n\t\t\t\tsuppressInlineSuggestions: '',\n\t\t\t\tshowOnSuggestConflict: 'never',\n\t\t\t\temptyResponseInformation: true,\n\t\t\t},\n\t\t};\n\n\t\tsuper(\n\t\t\tEditorOption.inlineSuggest, 'inlineSuggest', defaults,\n\t\t\t{\n\t\t\t\t'editor.inlineSuggest.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.enabled', \"Controls whether to automatically show inline suggestions in the editor.\")\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.showToolbar': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.showToolbar,\n\t\t\t\t\tenum: ['always', 'onHover', 'never'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('inlineSuggest.showToolbar.always', \"Show the inline suggestion toolbar whenever an inline suggestion is shown.\"),\n\t\t\t\t\t\tnls.localize('inlineSuggest.showToolbar.onHover', \"Show the inline suggestion toolbar when hovering over an inline suggestion.\"),\n\t\t\t\t\t\tnls.localize('inlineSuggest.showToolbar.never', \"Never show the inline suggestion toolbar.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.showToolbar', \"Controls when to show the inline suggestion toolbar.\"),\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.syntaxHighlightingEnabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.syntaxHighlightingEnabled,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.syntaxHighlightingEnabled', \"Controls whether to show syntax highlighting for inline suggestions in the editor.\"),\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.suppressSuggestions': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.suppressSuggestions,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.suppressSuggestions', \"Controls how inline suggestions interact with the suggest widget. If enabled, the suggest widget is not shown automatically when inline suggestions are available.\")\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.suppressInSnippetMode': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.suppressInSnippetMode,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.suppressInSnippetMode', \"Controls whether inline suggestions are suppressed when in snippet mode.\"),\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.minShowDelay': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: 0,\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tmaximum: 10000,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.minShowDelay', \"Controls the minimal delay in milliseconds after which inline suggestions are shown after typing.\"),\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.experimental.suppressInlineSuggestions': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.experimental.suppressInlineSuggestions,\n\t\t\t\t\ttags: ['experimental'],\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.suppressInlineSuggestions', \"Suppresses inline completions for specified extension IDs -- comma separated.\"),\n\t\t\t\t\texperiment: {\n\t\t\t\t\t\tmode: 'auto'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.experimental.emptyResponseInformation': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.experimental.emptyResponseInformation,\n\t\t\t\t\ttags: ['experimental'],\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.emptyResponseInformation', \"Controls whether to send request information from the inline suggestion provider.\"),\n\t\t\t\t\texperiment: {\n\t\t\t\t\t\tmode: 'auto'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.triggerCommandOnProviderChange': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.triggerCommandOnProviderChange,\n\t\t\t\t\ttags: ['experimental'],\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.triggerCommandOnProviderChange', \"Controls whether to trigger a command when the inline suggestion provider changes.\"),\n\t\t\t\t\texperiment: {\n\t\t\t\t\t\tmode: 'auto'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.experimental.showOnSuggestConflict': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.experimental.showOnSuggestConflict,\n\t\t\t\t\ttags: ['experimental'],\n\t\t\t\t\tenum: ['always', 'never', 'whenSuggestListIsIncomplete'],\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.showOnSuggestConflict', \"Controls whether to show inline suggestions when there is a suggest conflict.\"),\n\t\t\t\t\texperiment: {\n\t\t\t\t\t\tmode: 'auto'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.fontFamily': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.fontFamily,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.fontFamily', \"Controls the font family of the inline suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.edits.allowCodeShifting': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.edits.allowCodeShifting,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.edits.allowCodeShifting', \"Controls whether showing a suggestion will shift the code to make space for the suggestion inline.\"),\n\t\t\t\t\tenum: ['always', 'horizontal', 'never'],\n\t\t\t\t\ttags: ['nextEditSuggestions']\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.edits.renderSideBySide': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.edits.renderSideBySide,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.edits.renderSideBySide', \"Controls whether larger suggestions can be shown side by side.\"),\n\t\t\t\t\tenum: ['auto', 'never'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.inlineSuggest.edits.renderSideBySide.auto', \"Larger suggestions will show side by side if there is enough space, otherwise they will be shown below.\"),\n\t\t\t\t\t\tnls.localize('editor.inlineSuggest.edits.renderSideBySide.never', \"Larger suggestions are never shown side by side and will always be shown below.\"),\n\t\t\t\t\t],\n\t\t\t\t\ttags: ['nextEditSuggestions']\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.edits.showCollapsed': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.edits.showCollapsed,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.edits.showCollapsed', \"Controls whether the suggestion will show as collapsed until jumping to it.\"),\n\t\t\t\t\ttags: ['nextEditSuggestions']\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalInlineSuggestOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IInlineSuggestOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tmode: stringSet(input.mode, this.defaultValue.mode, ['prefix', 'subword', 'subwordSmart']),\n\t\t\tshowToolbar: stringSet(input.showToolbar, this.defaultValue.showToolbar, ['always', 'onHover', 'never']),\n\t\t\tsuppressSuggestions: boolean(input.suppressSuggestions, this.defaultValue.suppressSuggestions),\n\t\t\tkeepOnBlur: boolean(input.keepOnBlur, this.defaultValue.keepOnBlur),\n\t\t\tfontFamily: EditorStringOption.string(input.fontFamily, this.defaultValue.fontFamily),\n\t\t\tsyntaxHighlightingEnabled: boolean(input.syntaxHighlightingEnabled, this.defaultValue.syntaxHighlightingEnabled),\n\t\t\tminShowDelay: EditorIntOption.clampedInt(input.minShowDelay, 0, 0, 10000),\n\t\t\tsuppressInSnippetMode: boolean(input.suppressInSnippetMode, this.defaultValue.suppressInSnippetMode),\n\t\t\tedits: this._validateEdits(input.edits),\n\t\t\ttriggerCommandOnProviderChange: boolean(input.triggerCommandOnProviderChange, this.defaultValue.triggerCommandOnProviderChange),\n\t\t\texperimental: this._validateExperimental(input.experimental),\n\t\t};\n\t}\n\n\tprivate _validateEdits(_input: unknown): InternalInlineSuggestOptions['edits'] {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue.edits;\n\t\t}\n\t\tconst input = _input as Unknown<InternalInlineSuggestOptions['edits']>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.edits.enabled),\n\t\t\tshowCollapsed: boolean(input.showCollapsed, this.defaultValue.edits.showCollapsed),\n\t\t\tallowCodeShifting: stringSet(input.allowCodeShifting, this.defaultValue.edits.allowCodeShifting, ['always', 'horizontal', 'never']),\n\t\t\trenderSideBySide: stringSet(input.renderSideBySide, this.defaultValue.edits.renderSideBySide, ['never', 'auto']),\n\t\t};\n\t}\n\n\tprivate _validateExperimental(_input: unknown): InternalInlineSuggestOptions['experimental'] {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue.experimental;\n\t\t}\n\t\tconst input = _input as Unknown<InternalInlineSuggestOptions['experimental']>;\n\t\treturn {\n\t\t\tsuppressInlineSuggestions: EditorStringOption.string(input.suppressInlineSuggestions, this.defaultValue.experimental.suppressInlineSuggestions),\n\t\t\tshowOnSuggestConflict: stringSet(input.showOnSuggestConflict, this.defaultValue.experimental.showOnSuggestConflict, ['always', 'never', 'whenSuggestListIsIncomplete']),\n\t\t\temptyResponseInformation: boolean(input.emptyResponseInformation, this.defaultValue.experimental.emptyResponseInformation),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region bracketPairColorization\n\nexport interface IBracketPairColorizationOptions {\n\t/**\n\t * Enable or disable bracket pair colorization.\n\t*/\n\tenabled?: boolean;\n\n\t/**\n\t * Use independent color pool per bracket type.\n\t*/\n\tindependentColorPoolPerBracketType?: boolean;\n}\n\n/**\n * @internal\n */\nexport type InternalBracketPairColorizationOptions = Readonly<Required<IBracketPairColorizationOptions>>;\n\n/**\n * Configuration options for inline suggestions\n */\nclass BracketPairColorization extends BaseEditorOption<EditorOption.bracketPairColorization, IBracketPairColorizationOptions, InternalBracketPairColorizationOptions> {\n\tconstructor() {\n\t\tconst defaults: InternalBracketPairColorizationOptions = {\n\t\t\tenabled: EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions.enabled,\n\t\t\tindependentColorPoolPerBracketType: EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions.independentColorPoolPerBracketType,\n\t\t};\n\n\t\tsuper(\n\t\t\tEditorOption.bracketPairColorization, 'bracketPairColorization', defaults,\n\t\t\t{\n\t\t\t\t'editor.bracketPairColorization.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tmarkdownDescription: nls.localize('bracketPairColorization.enabled', \"Controls whether bracket pair colorization is enabled or not. Use {0} to override the bracket highlight colors.\", '`#workbench.colorCustomizations#`')\n\t\t\t\t},\n\t\t\t\t'editor.bracketPairColorization.independentColorPoolPerBracketType': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.independentColorPoolPerBracketType,\n\t\t\t\t\tdescription: nls.localize('bracketPairColorization.independentColorPoolPerBracketType', \"Controls whether each bracket type has its own independent color pool.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalBracketPairColorizationOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IBracketPairColorizationOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tindependentColorPoolPerBracketType: boolean(input.independentColorPoolPerBracketType, this.defaultValue.independentColorPoolPerBracketType),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region guides\n\nexport interface IGuidesOptions {\n\t/**\n\t * Enable rendering of bracket pair guides.\n\t * Defaults to false.\n\t*/\n\tbracketPairs?: boolean | 'active';\n\n\t/**\n\t * Enable rendering of vertical bracket pair guides.\n\t * Defaults to 'active'.\n\t */\n\tbracketPairsHorizontal?: boolean | 'active';\n\n\t/**\n\t * Enable highlighting of the active bracket pair.\n\t * Defaults to true.\n\t*/\n\thighlightActiveBracketPair?: boolean;\n\n\t/**\n\t * Enable rendering of indent guides.\n\t * Defaults to true.\n\t */\n\tindentation?: boolean;\n\n\t/**\n\t * Enable highlighting of the active indent guide.\n\t * Defaults to true.\n\t */\n\thighlightActiveIndentation?: boolean | 'always';\n}\n\n/**\n * @internal\n */\nexport type InternalGuidesOptions = Readonly<Required<IGuidesOptions>>;\n\n/**\n * Configuration options for inline suggestions\n */\nclass GuideOptions extends BaseEditorOption<EditorOption.guides, IGuidesOptions, InternalGuidesOptions> {\n\tconstructor() {\n\t\tconst defaults: InternalGuidesOptions = {\n\t\t\tbracketPairs: false,\n\t\t\tbracketPairsHorizontal: 'active',\n\t\t\thighlightActiveBracketPair: true,\n\n\t\t\tindentation: true,\n\t\t\thighlightActiveIndentation: true\n\t\t};\n\n\t\tsuper(\n\t\t\tEditorOption.guides, 'guides', defaults,\n\t\t\t{\n\t\t\t\t'editor.guides.bracketPairs': {\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, 'active', false],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairs.true', \"Enables bracket pair guides.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairs.active', \"Enables bracket pair guides only for the active bracket pair.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairs.false', \"Disables bracket pair guides.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.bracketPairs,\n\t\t\t\t\tdescription: nls.localize('editor.guides.bracketPairs', \"Controls whether bracket pair guides are enabled or not.\")\n\t\t\t\t},\n\t\t\t\t'editor.guides.bracketPairsHorizontal': {\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, 'active', false],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairsHorizontal.true', \"Enables horizontal guides as addition to vertical bracket pair guides.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairsHorizontal.active', \"Enables horizontal guides only for the active bracket pair.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairsHorizontal.false', \"Disables horizontal bracket pair guides.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.bracketPairsHorizontal,\n\t\t\t\t\tdescription: nls.localize('editor.guides.bracketPairsHorizontal', \"Controls whether horizontal bracket pair guides are enabled or not.\")\n\t\t\t\t},\n\t\t\t\t'editor.guides.highlightActiveBracketPair': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.highlightActiveBracketPair,\n\t\t\t\t\tdescription: nls.localize('editor.guides.highlightActiveBracketPair', \"Controls whether the editor should highlight the active bracket pair.\")\n\t\t\t\t},\n\t\t\t\t'editor.guides.indentation': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.indentation,\n\t\t\t\t\tdescription: nls.localize('editor.guides.indentation', \"Controls whether the editor should render indent guides.\")\n\t\t\t\t},\n\t\t\t\t'editor.guides.highlightActiveIndentation': {\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, 'always', false],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.guides.highlightActiveIndentation.true', \"Highlights the active indent guide.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.highlightActiveIndentation.always', \"Highlights the active indent guide even if bracket guides are highlighted.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.highlightActiveIndentation.false', \"Do not highlight the active indent guide.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.highlightActiveIndentation,\n\n\t\t\t\t\tdescription: nls.localize('editor.guides.highlightActiveIndentation', \"Controls whether the editor should highlight the active indent guide.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalGuidesOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IGuidesOptions>;\n\t\treturn {\n\t\t\tbracketPairs: primitiveSet(input.bracketPairs, this.defaultValue.bracketPairs, [true, false, 'active']),\n\t\t\tbracketPairsHorizontal: primitiveSet(input.bracketPairsHorizontal, this.defaultValue.bracketPairsHorizontal, [true, false, 'active']),\n\t\t\thighlightActiveBracketPair: boolean(input.highlightActiveBracketPair, this.defaultValue.highlightActiveBracketPair),\n\n\t\t\tindentation: boolean(input.indentation, this.defaultValue.indentation),\n\t\t\thighlightActiveIndentation: primitiveSet(input.highlightActiveIndentation, this.defaultValue.highlightActiveIndentation, [true, false, 'always']),\n\t\t};\n\t}\n}\n\nfunction primitiveSet<T extends string | boolean>(value: unknown, defaultValue: T, allowedValues: T[]): T {\n\tconst idx = allowedValues.indexOf(value as T);\n\tif (idx === -1) {\n\t\treturn defaultValue;\n\t}\n\treturn allowedValues[idx];\n}\n\n//#endregion\n\n//#region suggest\n\n/**\n * Configuration options for editor suggest widget\n */\nexport interface ISuggestOptions {\n\t/**\n\t * Overwrite word ends on accept. Default to false.\n\t */\n\tinsertMode?: 'insert' | 'replace';\n\t/**\n\t * Enable graceful matching. Defaults to true.\n\t */\n\tfilterGraceful?: boolean;\n\t/**\n\t * Prevent quick suggestions when a snippet is active. Defaults to true.\n\t */\n\tsnippetsPreventQuickSuggestions?: boolean;\n\t/**\n\t * Favors words that appear close to the cursor.\n\t */\n\tlocalityBonus?: boolean;\n\t/**\n\t * Enable using global storage for remembering suggestions.\n\t */\n\tshareSuggestSelections?: boolean;\n\t/**\n\t * Select suggestions when triggered via quick suggest or trigger characters\n\t */\n\tselectionMode?: 'always' | 'never' | 'whenTriggerCharacter' | 'whenQuickSuggestion';\n\t/**\n\t * Enable or disable icons in suggestions. Defaults to true.\n\t */\n\tshowIcons?: boolean;\n\t/**\n\t * Enable or disable the suggest status bar.\n\t */\n\tshowStatusBar?: boolean;\n\t/**\n\t * Enable or disable the rendering of the suggestion preview.\n\t */\n\tpreview?: boolean;\n\t/**\n\t * Configures the mode of the preview.\n\t*/\n\tpreviewMode?: 'prefix' | 'subword' | 'subwordSmart';\n\t/**\n\t * Show details inline with the label. Defaults to true.\n\t */\n\tshowInlineDetails?: boolean;\n\t/**\n\t * Show method-suggestions.\n\t */\n\tshowMethods?: boolean;\n\t/**\n\t * Show function-suggestions.\n\t */\n\tshowFunctions?: boolean;\n\t/**\n\t * Show constructor-suggestions.\n\t */\n\tshowConstructors?: boolean;\n\t/**\n\t * Show deprecated-suggestions.\n\t */\n\tshowDeprecated?: boolean;\n\t/**\n\t * Controls whether suggestions allow matches in the middle of the word instead of only at the beginning\n\t */\n\tmatchOnWordStartOnly?: boolean;\n\t/**\n\t * Show field-suggestions.\n\t */\n\tshowFields?: boolean;\n\t/**\n\t * Show variable-suggestions.\n\t */\n\tshowVariables?: boolean;\n\t/**\n\t * Show class-suggestions.\n\t */\n\tshowClasses?: boolean;\n\t/**\n\t * Show struct-suggestions.\n\t */\n\tshowStructs?: boolean;\n\t/**\n\t * Show interface-suggestions.\n\t */\n\tshowInterfaces?: boolean;\n\t/**\n\t * Show module-suggestions.\n\t */\n\tshowModules?: boolean;\n\t/**\n\t * Show property-suggestions.\n\t */\n\tshowProperties?: boolean;\n\t/**\n\t * Show event-suggestions.\n\t */\n\tshowEvents?: boolean;\n\t/**\n\t * Show operator-suggestions.\n\t */\n\tshowOperators?: boolean;\n\t/**\n\t * Show unit-suggestions.\n\t */\n\tshowUnits?: boolean;\n\t/**\n\t * Show value-suggestions.\n\t */\n\tshowValues?: boolean;\n\t/**\n\t * Show constant-suggestions.\n\t */\n\tshowConstants?: boolean;\n\t/**\n\t * Show enum-suggestions.\n\t */\n\tshowEnums?: boolean;\n\t/**\n\t * Show enumMember-suggestions.\n\t */\n\tshowEnumMembers?: boolean;\n\t/**\n\t * Show keyword-suggestions.\n\t */\n\tshowKeywords?: boolean;\n\t/**\n\t * Show text-suggestions.\n\t */\n\tshowWords?: boolean;\n\t/**\n\t * Show color-suggestions.\n\t */\n\tshowColors?: boolean;\n\t/**\n\t * Show file-suggestions.\n\t */\n\tshowFiles?: boolean;\n\t/**\n\t * Show reference-suggestions.\n\t */\n\tshowReferences?: boolean;\n\t/**\n\t * Show folder-suggestions.\n\t */\n\tshowFolders?: boolean;\n\t/**\n\t * Show typeParameter-suggestions.\n\t */\n\tshowTypeParameters?: boolean;\n\t/**\n\t * Show issue-suggestions.\n\t */\n\tshowIssues?: boolean;\n\t/**\n\t * Show user-suggestions.\n\t */\n\tshowUsers?: boolean;\n\t/**\n\t * Show snippet-suggestions.\n\t */\n\tshowSnippets?: boolean;\n}\n\n/**\n * @internal\n */\nexport type InternalSuggestOptions = Readonly<Required<ISuggestOptions>>;\n\nclass EditorSuggest extends BaseEditorOption<EditorOption.suggest, ISuggestOptions, InternalSuggestOptions> {\n\n\tconstructor() {\n\t\tconst defaults: InternalSuggestOptions = {\n\t\t\tinsertMode: 'insert',\n\t\t\tfilterGraceful: true,\n\t\t\tsnippetsPreventQuickSuggestions: false,\n\t\t\tlocalityBonus: false,\n\t\t\tshareSuggestSelections: false,\n\t\t\tselectionMode: 'always',\n\t\t\tshowIcons: true,\n\t\t\tshowStatusBar: false,\n\t\t\tpreview: false,\n\t\t\tpreviewMode: 'subwordSmart',\n\t\t\tshowInlineDetails: true,\n\t\t\tshowMethods: true,\n\t\t\tshowFunctions: true,\n\t\t\tshowConstructors: true,\n\t\t\tshowDeprecated: true,\n\t\t\tmatchOnWordStartOnly: true,\n\t\t\tshowFields: true,\n\t\t\tshowVariables: true,\n\t\t\tshowClasses: true,\n\t\t\tshowStructs: true,\n\t\t\tshowInterfaces: true,\n\t\t\tshowModules: true,\n\t\t\tshowProperties: true,\n\t\t\tshowEvents: true,\n\t\t\tshowOperators: true,\n\t\t\tshowUnits: true,\n\t\t\tshowValues: true,\n\t\t\tshowConstants: true,\n\t\t\tshowEnums: true,\n\t\t\tshowEnumMembers: true,\n\t\t\tshowKeywords: true,\n\t\t\tshowWords: true,\n\t\t\tshowColors: true,\n\t\t\tshowFiles: true,\n\t\t\tshowReferences: true,\n\t\t\tshowFolders: true,\n\t\t\tshowTypeParameters: true,\n\t\t\tshowSnippets: true,\n\t\t\tshowUsers: true,\n\t\t\tshowIssues: true,\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.suggest, 'suggest', defaults,\n\t\t\t{\n\t\t\t\t'editor.suggest.insertMode': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['insert', 'replace'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('suggest.insertMode.insert', \"Insert suggestion without overwriting text right of the cursor.\"),\n\t\t\t\t\t\tnls.localize('suggest.insertMode.replace', \"Insert suggestion and overwrite text right of the cursor.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.insertMode,\n\t\t\t\t\tdescription: nls.localize('suggest.insertMode', \"Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.filterGraceful': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.filterGraceful,\n\t\t\t\t\tdescription: nls.localize('suggest.filterGraceful', \"Controls whether filtering and sorting suggestions accounts for small typos.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.localityBonus': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.localityBonus,\n\t\t\t\t\tdescription: nls.localize('suggest.localityBonus', \"Controls whether sorting favors words that appear close to the cursor.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.shareSuggestSelections': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.shareSuggestSelections,\n\t\t\t\t\tmarkdownDescription: nls.localize('suggest.shareSuggestSelections', \"Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.selectionMode': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['always', 'never', 'whenTriggerCharacter', 'whenQuickSuggestion'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('suggest.insertMode.always', \"Always select a suggestion when automatically triggering IntelliSense.\"),\n\t\t\t\t\t\tnls.localize('suggest.insertMode.never', \"Never select a suggestion when automatically triggering IntelliSense.\"),\n\t\t\t\t\t\tnls.localize('suggest.insertMode.whenTriggerCharacter', \"Select a suggestion only when triggering IntelliSense from a trigger character.\"),\n\t\t\t\t\t\tnls.localize('suggest.insertMode.whenQuickSuggestion', \"Select a suggestion only when triggering IntelliSense as you type.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.selectionMode,\n\t\t\t\t\tmarkdownDescription: nls.localize('suggest.selectionMode', \"Controls whether a suggestion is selected when the widget shows. Note that this only applies to automatically triggered suggestions ({0} and {1}) and that a suggestion is always selected when explicitly invoked, e.g via `Ctrl+Space`.\", '`#editor.quickSuggestions#`', '`#editor.suggestOnTriggerCharacters#`')\n\t\t\t\t},\n\t\t\t\t'editor.suggest.snippetsPreventQuickSuggestions': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.snippetsPreventQuickSuggestions,\n\t\t\t\t\tdescription: nls.localize('suggest.snippetsPreventQuickSuggestions', \"Controls whether an active snippet prevents quick suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showIcons': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.showIcons,\n\t\t\t\t\tdescription: nls.localize('suggest.showIcons', \"Controls whether to show or hide icons in suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showStatusBar': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.showStatusBar,\n\t\t\t\t\tdescription: nls.localize('suggest.showStatusBar', \"Controls the visibility of the status bar at the bottom of the suggest widget.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.preview': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.preview,\n\t\t\t\t\tdescription: nls.localize('suggest.preview', \"Controls whether to preview the suggestion outcome in the editor.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showInlineDetails': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.showInlineDetails,\n\t\t\t\t\tdescription: nls.localize('suggest.showInlineDetails', \"Controls whether suggest details show inline with the label or only in the details widget.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.maxVisibleSuggestions': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdeprecationMessage: nls.localize('suggest.maxVisibleSuggestions.dep', \"This setting is deprecated. The suggest widget can now be resized.\"),\n\t\t\t\t},\n\t\t\t\t'editor.suggest.filteredTypes': {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tdeprecationMessage: nls.localize('deprecated', \"This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showMethods': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showMethods', \"When enabled IntelliSense shows `method`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showFunctions': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showFunctions', \"When enabled IntelliSense shows `function`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showConstructors': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showConstructors', \"When enabled IntelliSense shows `constructor`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showDeprecated': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showDeprecated', \"When enabled IntelliSense shows `deprecated`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.matchOnWordStartOnly': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.matchOnWordStartOnly', \"When enabled IntelliSense filtering requires that the first character matches on a word start. For example, `c` on `Console` or `WebContext` but _not_ on `description`. When disabled IntelliSense will show more results but still sorts them by match quality.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showFields': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showFields', \"When enabled IntelliSense shows `field`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showVariables': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showVariables', \"When enabled IntelliSense shows `variable`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showClasses': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showClasss', \"When enabled IntelliSense shows `class`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showStructs': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showStructs', \"When enabled IntelliSense shows `struct`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showInterfaces': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showInterfaces', \"When enabled IntelliSense shows `interface`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showModules': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showModules', \"When enabled IntelliSense shows `module`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showProperties': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showPropertys', \"When enabled IntelliSense shows `property`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showEvents': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showEvents', \"When enabled IntelliSense shows `event`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showOperators': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showOperators', \"When enabled IntelliSense shows `operator`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showUnits': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showUnits', \"When enabled IntelliSense shows `unit`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showValues': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showValues', \"When enabled IntelliSense shows `value`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showConstants': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showConstants', \"When enabled IntelliSense shows `constant`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showEnums': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showEnums', \"When enabled IntelliSense shows `enum`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showEnumMembers': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showEnumMembers', \"When enabled IntelliSense shows `enumMember`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showKeywords': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showKeywords', \"When enabled IntelliSense shows `keyword`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showWords': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showTexts', \"When enabled IntelliSense shows `text`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showColors': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showColors', \"When enabled IntelliSense shows `color`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showFiles': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showFiles', \"When enabled IntelliSense shows `file`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showReferences': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showReferences', \"When enabled IntelliSense shows `reference`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showCustomcolors': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showCustomcolors', \"When enabled IntelliSense shows `customcolor`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showFolders': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showFolders', \"When enabled IntelliSense shows `folder`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showTypeParameters': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showTypeParameters', \"When enabled IntelliSense shows `typeParameter`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showSnippets': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showSnippets', \"When enabled IntelliSense shows `snippet`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showUsers': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showUsers', \"When enabled IntelliSense shows `user`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showIssues': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showIssues', \"When enabled IntelliSense shows `issues`-suggestions.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalSuggestOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<ISuggestOptions>;\n\t\treturn {\n\t\t\tinsertMode: stringSet(input.insertMode, this.defaultValue.insertMode, ['insert', 'replace']),\n\t\t\tfilterGraceful: boolean(input.filterGraceful, this.defaultValue.filterGraceful),\n\t\t\tsnippetsPreventQuickSuggestions: boolean(input.snippetsPreventQuickSuggestions, this.defaultValue.filterGraceful),\n\t\t\tlocalityBonus: boolean(input.localityBonus, this.defaultValue.localityBonus),\n\t\t\tshareSuggestSelections: boolean(input.shareSuggestSelections, this.defaultValue.shareSuggestSelections),\n\t\t\tselectionMode: stringSet(input.selectionMode, this.defaultValue.selectionMode, ['always', 'never', 'whenQuickSuggestion', 'whenTriggerCharacter']),\n\t\t\tshowIcons: boolean(input.showIcons, this.defaultValue.showIcons),\n\t\t\tshowStatusBar: boolean(input.showStatusBar, this.defaultValue.showStatusBar),\n\t\t\tpreview: boolean(input.preview, this.defaultValue.preview),\n\t\t\tpreviewMode: stringSet(input.previewMode, this.defaultValue.previewMode, ['prefix', 'subword', 'subwordSmart']),\n\t\t\tshowInlineDetails: boolean(input.showInlineDetails, this.defaultValue.showInlineDetails),\n\t\t\tshowMethods: boolean(input.showMethods, this.defaultValue.showMethods),\n\t\t\tshowFunctions: boolean(input.showFunctions, this.defaultValue.showFunctions),\n\t\t\tshowConstructors: boolean(input.showConstructors, this.defaultValue.showConstructors),\n\t\t\tshowDeprecated: boolean(input.showDeprecated, this.defaultValue.showDeprecated),\n\t\t\tmatchOnWordStartOnly: boolean(input.matchOnWordStartOnly, this.defaultValue.matchOnWordStartOnly),\n\t\t\tshowFields: boolean(input.showFields, this.defaultValue.showFields),\n\t\t\tshowVariables: boolean(input.showVariables, this.defaultValue.showVariables),\n\t\t\tshowClasses: boolean(input.showClasses, this.defaultValue.showClasses),\n\t\t\tshowStructs: boolean(input.showStructs, this.defaultValue.showStructs),\n\t\t\tshowInterfaces: boolean(input.showInterfaces, this.defaultValue.showInterfaces),\n\t\t\tshowModules: boolean(input.showModules, this.defaultValue.showModules),\n\t\t\tshowProperties: boolean(input.showProperties, this.defaultValue.showProperties),\n\t\t\tshowEvents: boolean(input.showEvents, this.defaultValue.showEvents),\n\t\t\tshowOperators: boolean(input.showOperators, this.defaultValue.showOperators),\n\t\t\tshowUnits: boolean(input.showUnits, this.defaultValue.showUnits),\n\t\t\tshowValues: boolean(input.showValues, this.defaultValue.showValues),\n\t\t\tshowConstants: boolean(input.showConstants, this.defaultValue.showConstants),\n\t\t\tshowEnums: boolean(input.showEnums, this.defaultValue.showEnums),\n\t\t\tshowEnumMembers: boolean(input.showEnumMembers, this.defaultValue.showEnumMembers),\n\t\t\tshowKeywords: boolean(input.showKeywords, this.defaultValue.showKeywords),\n\t\t\tshowWords: boolean(input.showWords, this.defaultValue.showWords),\n\t\t\tshowColors: boolean(input.showColors, this.defaultValue.showColors),\n\t\t\tshowFiles: boolean(input.showFiles, this.defaultValue.showFiles),\n\t\t\tshowReferences: boolean(input.showReferences, this.defaultValue.showReferences),\n\t\t\tshowFolders: boolean(input.showFolders, this.defaultValue.showFolders),\n\t\t\tshowTypeParameters: boolean(input.showTypeParameters, this.defaultValue.showTypeParameters),\n\t\t\tshowSnippets: boolean(input.showSnippets, this.defaultValue.showSnippets),\n\t\t\tshowUsers: boolean(input.showUsers, this.defaultValue.showUsers),\n\t\t\tshowIssues: boolean(input.showIssues, this.defaultValue.showIssues),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region smart select\n\nexport interface ISmartSelectOptions {\n\tselectLeadingAndTrailingWhitespace?: boolean;\n\tselectSubwords?: boolean;\n}\n\n/**\n * @internal\n */\nexport type SmartSelectOptions = Readonly<Required<ISmartSelectOptions>>;\n\nclass SmartSelect extends BaseEditorOption<EditorOption.smartSelect, ISmartSelectOptions, SmartSelectOptions> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.smartSelect, 'smartSelect',\n\t\t\t{\n\t\t\t\tselectLeadingAndTrailingWhitespace: true,\n\t\t\t\tselectSubwords: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\t'editor.smartSelect.selectLeadingAndTrailingWhitespace': {\n\t\t\t\t\tdescription: nls.localize('selectLeadingAndTrailingWhitespace', \"Whether leading and trailing whitespace should always be selected.\"),\n\t\t\t\t\tdefault: true,\n\t\t\t\t\ttype: 'boolean'\n\t\t\t\t},\n\t\t\t\t'editor.smartSelect.selectSubwords': {\n\t\t\t\t\tdescription: nls.localize('selectSubwords', \"Whether subwords (like 'foo' in 'fooBar' or 'foo_bar') should be selected.\"),\n\t\t\t\t\tdefault: true,\n\t\t\t\t\ttype: 'boolean'\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): Readonly<Required<ISmartSelectOptions>> {\n\t\tif (!input || typeof input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\treturn {\n\t\t\tselectLeadingAndTrailingWhitespace: boolean((input as ISmartSelectOptions).selectLeadingAndTrailingWhitespace, this.defaultValue.selectLeadingAndTrailingWhitespace),\n\t\t\tselectSubwords: boolean((input as ISmartSelectOptions).selectSubwords, this.defaultValue.selectSubwords),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region wordSegmenterLocales\n\n/**\n * Locales used for segmenting lines into words when doing word related navigations or operations.\n *\n * Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.).\n */\nclass WordSegmenterLocales extends BaseEditorOption<EditorOption.wordSegmenterLocales, string | string[], string[]> {\n\tconstructor() {\n\t\tconst defaults: string[] = [];\n\n\t\tsuper(\n\t\t\tEditorOption.wordSegmenterLocales, 'wordSegmenterLocales', defaults,\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t}, {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: 'string'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tdescription: nls.localize('wordSegmenterLocales', \"Locales to be used for word segmentation when doing word related navigations or operations. Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.).\"),\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tdefault: defaults,\n\t\t\t},\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): string[] {\n\t\tif (typeof input === 'string') {\n\t\t\tinput = [input];\n\t\t}\n\t\tif (Array.isArray(input)) {\n\t\t\tconst validLocales: string[] = [];\n\t\t\tfor (const locale of input) {\n\t\t\t\tif (typeof locale === 'string') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (Intl.Segmenter.supportedLocalesOf(locale).length > 0) {\n\t\t\t\t\t\t\tvalidLocales.push(locale);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// ignore invalid locales\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn validLocales;\n\t\t}\n\n\t\treturn this.defaultValue;\n\t}\n}\n\n\n//#endregion\n\n//#region wrappingIndent\n\n/**\n * Describes how to indent wrapped lines.\n */\nexport const enum WrappingIndent {\n\t/**\n\t * No indentation => wrapped lines begin at column 1.\n\t */\n\tNone = 0,\n\t/**\n\t * Same => wrapped lines get the same indentation as the parent.\n\t */\n\tSame = 1,\n\t/**\n\t * Indent => wrapped lines get +1 indentation toward the parent.\n\t */\n\tIndent = 2,\n\t/**\n\t * DeepIndent => wrapped lines get +2 indentation toward the parent.\n\t */\n\tDeepIndent = 3\n}\n\nclass WrappingIndentOption extends BaseEditorOption<EditorOption.wrappingIndent, 'none' | 'same' | 'indent' | 'deepIndent', WrappingIndent> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.wrappingIndent, 'wrappingIndent', WrappingIndent.Same,\n\t\t\t{\n\t\t\t\t'editor.wrappingIndent': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['none', 'same', 'indent', 'deepIndent'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('wrappingIndent.none', \"No indentation. Wrapped lines begin at column 1.\"),\n\t\t\t\t\t\tnls.localize('wrappingIndent.same', \"Wrapped lines get the same indentation as the parent.\"),\n\t\t\t\t\t\tnls.localize('wrappingIndent.indent', \"Wrapped lines get +1 indentation toward the parent.\"),\n\t\t\t\t\t\tnls.localize('wrappingIndent.deepIndent', \"Wrapped lines get +2 indentation toward the parent.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('wrappingIndent', \"Controls the indentation of wrapped lines.\"),\n\t\t\t\t\tdefault: 'same'\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): WrappingIndent {\n\t\tswitch (input) {\n\t\t\tcase 'none': return WrappingIndent.None;\n\t\t\tcase 'same': return WrappingIndent.Same;\n\t\t\tcase 'indent': return WrappingIndent.Indent;\n\t\t\tcase 'deepIndent': return WrappingIndent.DeepIndent;\n\t\t}\n\t\treturn WrappingIndent.Same;\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: WrappingIndent): WrappingIndent {\n\t\tconst accessibilitySupport = options.get(EditorOption.accessibilitySupport);\n\t\tif (accessibilitySupport === AccessibilitySupport.Enabled) {\n\t\t\t// if we know for a fact that a screen reader is attached, we use no indent wrapping to\n\t\t\t// help that the editor's wrapping points match the textarea's wrapping points\n\t\t\treturn WrappingIndent.None;\n\t\t}\n\t\treturn value;\n\t}\n}\n\n//#endregion\n\n//#region wrappingInfo\n\nexport interface EditorWrappingInfo {\n\treadonly isDominatedByLongLines: boolean;\n\treadonly isWordWrapMinified: boolean;\n\treadonly isViewportWrapping: boolean;\n\treadonly wrappingColumn: number;\n}\n\nclass EditorWrappingInfoComputer extends ComputedEditorOption<EditorOption.wrappingInfo, EditorWrappingInfo> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.wrappingInfo, {\n\t\t\tisDominatedByLongLines: false,\n\t\t\tisWordWrapMinified: false,\n\t\t\tisViewportWrapping: false,\n\t\t\twrappingColumn: -1\n\t\t});\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: EditorWrappingInfo): EditorWrappingInfo {\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\n\t\treturn {\n\t\t\tisDominatedByLongLines: env.isDominatedByLongLines,\n\t\t\tisWordWrapMinified: layoutInfo.isWordWrapMinified,\n\t\t\tisViewportWrapping: layoutInfo.isViewportWrapping,\n\t\t\twrappingColumn: layoutInfo.wrappingColumn,\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region dropIntoEditor\n\n/**\n * Configuration options for editor drop into behavior\n */\nexport interface IDropIntoEditorOptions {\n\t/**\n\t * Enable dropping into editor.\n\t * Defaults to true.\n\t */\n\tenabled?: boolean;\n\n\t/**\n\t * Controls if a widget is shown after a drop.\n\t * Defaults to 'afterDrop'.\n\t */\n\tshowDropSelector?: 'afterDrop' | 'never';\n}\n\n/**\n * @internal\n */\nexport type EditorDropIntoEditorOptions = Readonly<Required<IDropIntoEditorOptions>>;\n\nclass EditorDropIntoEditor extends BaseEditorOption<EditorOption.dropIntoEditor, IDropIntoEditorOptions, EditorDropIntoEditorOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorDropIntoEditorOptions = { enabled: true, showDropSelector: 'afterDrop' };\n\t\tsuper(\n\t\t\tEditorOption.dropIntoEditor, 'dropIntoEditor', defaults,\n\t\t\t{\n\t\t\t\t'editor.dropIntoEditor.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tmarkdownDescription: nls.localize('dropIntoEditor.enabled', \"Controls whether you can drag and drop a file into a text editor by holding down the `Shift` key (instead of opening the file in an editor).\"),\n\t\t\t\t},\n\t\t\t\t'editor.dropIntoEditor.showDropSelector': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tmarkdownDescription: nls.localize('dropIntoEditor.showDropSelector', \"Controls if a widget is shown when dropping files into the editor. This widget lets you control how the file is dropped.\"),\n\t\t\t\t\tenum: [\n\t\t\t\t\t\t'afterDrop',\n\t\t\t\t\t\t'never'\n\t\t\t\t\t],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('dropIntoEditor.showDropSelector.afterDrop', \"Show the drop selector widget after a file is dropped into the editor.\"),\n\t\t\t\t\t\tnls.localize('dropIntoEditor.showDropSelector.never', \"Never show the drop selector widget. Instead the default drop provider is always used.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: 'afterDrop',\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorDropIntoEditorOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IDropIntoEditorOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tshowDropSelector: stringSet(input.showDropSelector, this.defaultValue.showDropSelector, ['afterDrop', 'never']),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region pasteAs\n\n/**\n * Configuration options for editor pasting as into behavior\n */\nexport interface IPasteAsOptions {\n\t/**\n\t * Enable paste as functionality in editors.\n\t * Defaults to true.\n\t */\n\tenabled?: boolean;\n\n\t/**\n\t * Controls if a widget is shown after a drop.\n\t * Defaults to 'afterPaste'.\n\t */\n\tshowPasteSelector?: 'afterPaste' | 'never';\n}\n\n/**\n * @internal\n */\nexport type EditorPasteAsOptions = Readonly<Required<IPasteAsOptions>>;\n\nclass EditorPasteAs extends BaseEditorOption<EditorOption.pasteAs, IPasteAsOptions, EditorPasteAsOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorPasteAsOptions = { enabled: true, showPasteSelector: 'afterPaste' };\n\t\tsuper(\n\t\t\tEditorOption.pasteAs, 'pasteAs', defaults,\n\t\t\t{\n\t\t\t\t'editor.pasteAs.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tmarkdownDescription: nls.localize('pasteAs.enabled', \"Controls whether you can paste content in different ways.\"),\n\t\t\t\t},\n\t\t\t\t'editor.pasteAs.showPasteSelector': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tmarkdownDescription: nls.localize('pasteAs.showPasteSelector', \"Controls if a widget is shown when pasting content in to the editor. This widget lets you control how the file is pasted.\"),\n\t\t\t\t\tenum: [\n\t\t\t\t\t\t'afterPaste',\n\t\t\t\t\t\t'never'\n\t\t\t\t\t],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('pasteAs.showPasteSelector.afterPaste', \"Show the paste selector widget after content is pasted into the editor.\"),\n\t\t\t\t\t\tnls.localize('pasteAs.showPasteSelector.never', \"Never show the paste selector widget. Instead the default pasting behavior is always used.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: 'afterPaste',\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorPasteAsOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IPasteAsOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tshowPasteSelector: stringSet(input.showPasteSelector, this.defaultValue.showPasteSelector, ['afterPaste', 'never']),\n\t\t};\n\t}\n}\n\n//#endregion\n\n/**\n * @internal\n */\nexport const editorOptionsRegistry: IEditorOption<EditorOption, unknown>[] = [];\n\nfunction register<K extends EditorOption, V>(option: IEditorOption<K, V>): IEditorOption<K, V> {\n\teditorOptionsRegistry[option.id] = option;\n\treturn option;\n}\n\nexport const enum EditorOption {\n\tacceptSuggestionOnCommitCharacter,\n\tacceptSuggestionOnEnter,\n\taccessibilitySupport,\n\taccessibilityPageSize,\n\tallowOverflow,\n\tallowVariableLineHeights,\n\tallowVariableFonts,\n\tallowVariableFontsInAccessibilityMode,\n\tariaLabel,\n\tariaRequired,\n\tautoClosingBrackets,\n\tautoClosingComments,\n\tscreenReaderAnnounceInlineSuggestion,\n\tautoClosingDelete,\n\tautoClosingOvertype,\n\tautoClosingQuotes,\n\tautoIndent,\n\tautoIndentOnPaste,\n\tautoIndentOnPasteWithinString,\n\tautomaticLayout,\n\tautoSurround,\n\tbracketPairColorization,\n\tguides,\n\tcodeLens,\n\tcodeLensFontFamily,\n\tcodeLensFontSize,\n\tcolorDecorators,\n\tcolorDecoratorsLimit,\n\tcolumnSelection,\n\tcomments,\n\tcontextmenu,\n\tcopyWithSyntaxHighlighting,\n\tcursorBlinking,\n\tcursorSmoothCaretAnimation,\n\tcursorStyle,\n\tcursorSurroundingLines,\n\tcursorSurroundingLinesStyle,\n\tcursorWidth,\n\tcursorHeight,\n\tdisableLayerHinting,\n\tdisableMonospaceOptimizations,\n\tdomReadOnly,\n\tdragAndDrop,\n\tdropIntoEditor,\n\teditContext,\n\temptySelectionClipboard,\n\texperimentalGpuAcceleration,\n\texperimentalWhitespaceRendering,\n\textraEditorClassName,\n\tfastScrollSensitivity,\n\tfind,\n\tfixedOverflowWidgets,\n\tfolding,\n\tfoldingStrategy,\n\tfoldingHighlight,\n\tfoldingImportsByDefault,\n\tfoldingMaximumRegions,\n\tunfoldOnClickAfterEndOfLine,\n\tfontFamily,\n\tfontInfo,\n\tfontLigatures,\n\tfontSize,\n\tfontWeight,\n\tfontVariations,\n\tformatOnPaste,\n\tformatOnType,\n\tglyphMargin,\n\tgotoLocation,\n\thideCursorInOverviewRuler,\n\thover,\n\tinDiffEditor,\n\tinlineSuggest,\n\tletterSpacing,\n\tlightbulb,\n\tlineDecorationsWidth,\n\tlineHeight,\n\tlineNumbers,\n\tlineNumbersMinChars,\n\tlinkedEditing,\n\tlinks,\n\tmatchBrackets,\n\tminimap,\n\tmouseStyle,\n\tmouseWheelScrollSensitivity,\n\tmouseWheelZoom,\n\tmultiCursorMergeOverlapping,\n\tmultiCursorModifier,\n\tmouseMiddleClickAction,\n\tmultiCursorPaste,\n\tmultiCursorLimit,\n\toccurrencesHighlight,\n\toccurrencesHighlightDelay,\n\tovertypeCursorStyle,\n\tovertypeOnPaste,\n\toverviewRulerBorder,\n\toverviewRulerLanes,\n\tpadding,\n\tpasteAs,\n\tparameterHints,\n\tpeekWidgetDefaultFocus,\n\tplaceholder,\n\tdefinitionLinkOpensInPeek,\n\tquickSuggestions,\n\tquickSuggestionsDelay,\n\treadOnly,\n\treadOnlyMessage,\n\trenameOnType,\n\trenderRichScreenReaderContent,\n\trenderControlCharacters,\n\trenderFinalNewline,\n\trenderLineHighlight,\n\trenderLineHighlightOnlyWhenFocus,\n\trenderValidationDecorations,\n\trenderWhitespace,\n\trevealHorizontalRightPadding,\n\troundedSelection,\n\trulers,\n\tscrollbar,\n\tscrollBeyondLastColumn,\n\tscrollBeyondLastLine,\n\tscrollPredominantAxis,\n\tselectionClipboard,\n\tselectionHighlight,\n\tselectionHighlightMaxLength,\n\tselectionHighlightMultiline,\n\tselectOnLineNumbers,\n\tshowFoldingControls,\n\tshowUnused,\n\tsnippetSuggestions,\n\tsmartSelect,\n\tsmoothScrolling,\n\tstickyScroll,\n\tstickyTabStops,\n\tstopRenderingLineAfter,\n\tsuggest,\n\tsuggestFontSize,\n\tsuggestLineHeight,\n\tsuggestOnTriggerCharacters,\n\tsuggestSelection,\n\ttabCompletion,\n\ttabIndex,\n\ttrimWhitespaceOnDelete,\n\tunicodeHighlighting,\n\tunusualLineTerminators,\n\tuseShadowDOM,\n\tuseTabStops,\n\twordBreak,\n\twordSegmenterLocales,\n\twordSeparators,\n\twordWrap,\n\twordWrapBreakAfterCharacters,\n\twordWrapBreakBeforeCharacters,\n\twordWrapColumn,\n\twordWrapOverride1,\n\twordWrapOverride2,\n\twrappingIndent,\n\twrappingStrategy,\n\tshowDeprecated,\n\tinertialScroll,\n\tinlayHints,\n\twrapOnEscapedLineFeeds,\n\t// Leave these at the end (because they have dependencies!)\n\teffectiveCursorStyle,\n\teditorClassName,\n\tpixelRatio,\n\ttabFocusMode,\n\tlayoutInfo,\n\twrappingInfo,\n\tdefaultColorDecorators,\n\tcolorDecoratorsActivatedOn,\n\tinlineCompletionsAccessibilityVerbose,\n\teffectiveEditContext,\n\tscrollOnMiddleClick,\n\teffectiveAllowVariableFonts\n}\n\nexport const EditorOptions = {\n\tacceptSuggestionOnCommitCharacter: register(new EditorBooleanOption(\n\t\tEditorOption.acceptSuggestionOnCommitCharacter, 'acceptSuggestionOnCommitCharacter', true,\n\t\t{ markdownDescription: nls.localize('acceptSuggestionOnCommitCharacter', \"Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.\") }\n\t)),\n\tacceptSuggestionOnEnter: register(new EditorStringEnumOption(\n\t\tEditorOption.acceptSuggestionOnEnter, 'acceptSuggestionOnEnter',\n\t\t'on' as 'on' | 'smart' | 'off',\n\t\t['on', 'smart', 'off'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('acceptSuggestionOnEnterSmart', \"Only accept a suggestion with `Enter` when it makes a textual change.\"),\n\t\t\t\t''\n\t\t\t],\n\t\t\tmarkdownDescription: nls.localize('acceptSuggestionOnEnter', \"Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.\")\n\t\t}\n\t)),\n\taccessibilitySupport: register(new EditorAccessibilitySupport()),\n\taccessibilityPageSize: register(new EditorIntOption(EditorOption.accessibilityPageSize, 'accessibilityPageSize', 500, 1, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{\n\t\t\tdescription: nls.localize('accessibilityPageSize', \"Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default.\"),\n\t\t\ttags: ['accessibility']\n\t\t}\n\t)),\n\tallowOverflow: register(new EditorBooleanOption(\n\t\tEditorOption.allowOverflow, 'allowOverflow', true,\n\t)),\n\tallowVariableLineHeights: register(new EditorBooleanOption(\n\t\tEditorOption.allowVariableLineHeights, 'allowVariableLineHeights', true,\n\t\t{\n\t\t\tdescription: nls.localize('allowVariableLineHeights', \"Controls whether to allow using variable line heights in the editor.\")\n\t\t}\n\t)),\n\tallowVariableFonts: register(new EditorBooleanOption(\n\t\tEditorOption.allowVariableFonts, 'allowVariableFonts', true,\n\t\t{\n\t\t\tdescription: nls.localize('allowVariableFonts', \"Controls whether to allow using variable fonts in the editor.\")\n\t\t}\n\t)),\n\tallowVariableFontsInAccessibilityMode: register(new EditorBooleanOption(\n\t\tEditorOption.allowVariableFontsInAccessibilityMode, 'allowVariableFontsInAccessibilityMode', false,\n\t\t{\n\t\t\tdescription: nls.localize('allowVariableFontsInAccessibilityMode', \"Controls whether to allow using variable fonts in the editor in the accessibility mode.\"),\n\t\t\ttags: ['accessibility']\n\t\t}\n\t)),\n\tariaLabel: register(new EditorStringOption(\n\t\tEditorOption.ariaLabel, 'ariaLabel', nls.localize('editorViewAccessibleLabel', \"Editor content\")\n\t)),\n\tariaRequired: register(new EditorBooleanOption(\n\t\tEditorOption.ariaRequired, 'ariaRequired', false, undefined\n\t)),\n\tscreenReaderAnnounceInlineSuggestion: register(new EditorBooleanOption(\n\t\tEditorOption.screenReaderAnnounceInlineSuggestion, 'screenReaderAnnounceInlineSuggestion', true,\n\t\t{\n\t\t\tdescription: nls.localize('screenReaderAnnounceInlineSuggestion', \"Control whether inline suggestions are announced by a screen reader.\"),\n\t\t\ttags: ['accessibility']\n\t\t}\n\t)),\n\tautoClosingBrackets: register(new EditorStringEnumOption(\n\t\tEditorOption.autoClosingBrackets, 'autoClosingBrackets',\n\t\t'languageDefined' as 'always' | 'languageDefined' | 'beforeWhitespace' | 'never',\n\t\t['always', 'languageDefined', 'beforeWhitespace', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('editor.autoClosingBrackets.languageDefined', \"Use language configurations to determine when to autoclose brackets.\"),\n\t\t\t\tnls.localize('editor.autoClosingBrackets.beforeWhitespace', \"Autoclose brackets only when the cursor is to the left of whitespace.\"),\n\t\t\t\t'',\n\t\t\t],\n\t\t\tdescription: nls.localize('autoClosingBrackets', \"Controls whether the editor should automatically close brackets after the user adds an opening bracket.\")\n\t\t}\n\t)),\n\tautoClosingComments: register(new EditorStringEnumOption(\n\t\tEditorOption.autoClosingComments, 'autoClosingComments',\n\t\t'languageDefined' as 'always' | 'languageDefined' | 'beforeWhitespace' | 'never',\n\t\t['always', 'languageDefined', 'beforeWhitespace', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('editor.autoClosingComments.languageDefined', \"Use language configurations to determine when to autoclose comments.\"),\n\t\t\t\tnls.localize('editor.autoClosingComments.beforeWhitespace', \"Autoclose comments only when the cursor is to the left of whitespace.\"),\n\t\t\t\t'',\n\t\t\t],\n\t\t\tdescription: nls.localize('autoClosingComments', \"Controls whether the editor should automatically close comments after the user adds an opening comment.\")\n\t\t}\n\t)),\n\tautoClosingDelete: register(new EditorStringEnumOption(\n\t\tEditorOption.autoClosingDelete, 'autoClosingDelete',\n\t\t'auto' as 'always' | 'auto' | 'never',\n\t\t['always', 'auto', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('editor.autoClosingDelete.auto', \"Remove adjacent closing quotes or brackets only if they were automatically inserted.\"),\n\t\t\t\t'',\n\t\t\t],\n\t\t\tdescription: nls.localize('autoClosingDelete', \"Controls whether the editor should remove adjacent closing quotes or brackets when deleting.\")\n\t\t}\n\t)),\n\tautoClosingOvertype: register(new EditorStringEnumOption(\n\t\tEditorOption.autoClosingOvertype, 'autoClosingOvertype',\n\t\t'auto' as 'always' | 'auto' | 'never',\n\t\t['always', 'auto', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('editor.autoClosingOvertype.auto', \"Type over closing quotes or brackets only if they were automatically inserted.\"),\n\t\t\t\t'',\n\t\t\t],\n\t\t\tdescription: nls.localize('autoClosingOvertype', \"Controls whether the editor should type over closing quotes or brackets.\")\n\t\t}\n\t)),\n\tautoClosingQuotes: register(new EditorStringEnumOption(\n\t\tEditorOption.autoClosingQuotes, 'autoClosingQuotes',\n\t\t'languageDefined' as 'always' | 'languageDefined' | 'beforeWhitespace' | 'never',\n\t\t['always', 'languageDefined', 'beforeWhitespace', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('editor.autoClosingQuotes.languageDefined', \"Use language configurations to determine when to autoclose quotes.\"),\n\t\t\t\tnls.localize('editor.autoClosingQuotes.beforeWhitespace', \"Autoclose quotes only when the cursor is to the left of whitespace.\"),\n\t\t\t\t'',\n\t\t\t],\n\t\t\tdescription: nls.localize('autoClosingQuotes', \"Controls whether the editor should automatically close quotes after the user adds an opening quote.\")\n\t\t}\n\t)),\n\tautoIndent: register(new EditorEnumOption(\n\t\tEditorOption.autoIndent, 'autoIndent',\n\t\tEditorAutoIndentStrategy.Full, 'full',\n\t\t['none', 'keep', 'brackets', 'advanced', 'full'],\n\t\t_autoIndentFromString,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('editor.autoIndent.none', \"The editor will not insert indentation automatically.\"),\n\t\t\t\tnls.localize('editor.autoIndent.keep', \"The editor will keep the current line's indentation.\"),\n\t\t\t\tnls.localize('editor.autoIndent.brackets', \"The editor will keep the current line's indentation and honor language defined brackets.\"),\n\t\t\t\tnls.localize('editor.autoIndent.advanced', \"The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages.\"),\n\t\t\t\tnls.localize('editor.autoIndent.full', \"The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('autoIndent', \"Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.\")\n\t\t}\n\t)),\n\tautoIndentOnPaste: register(new EditorBooleanOption(\n\t\tEditorOption.autoIndentOnPaste, 'autoIndentOnPaste', false,\n\t\t{ description: nls.localize('autoIndentOnPaste', \"Controls whether the editor should automatically auto-indent the pasted content.\") }\n\t)),\n\tautoIndentOnPasteWithinString: register(new EditorBooleanOption(\n\t\tEditorOption.autoIndentOnPasteWithinString, 'autoIndentOnPasteWithinString', true,\n\t\t{ description: nls.localize('autoIndentOnPasteWithinString', \"Controls whether the editor should automatically auto-indent the pasted content when pasted within a string. This takes effect when autoIndentOnPaste is true.\") }\n\t)),\n\tautomaticLayout: register(new EditorBooleanOption(\n\t\tEditorOption.automaticLayout, 'automaticLayout', false,\n\t)),\n\tautoSurround: register(new EditorStringEnumOption(\n\t\tEditorOption.autoSurround, 'autoSurround',\n\t\t'languageDefined' as 'languageDefined' | 'quotes' | 'brackets' | 'never',\n\t\t['languageDefined', 'quotes', 'brackets', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('editor.autoSurround.languageDefined', \"Use language configurations to determine when to automatically surround selections.\"),\n\t\t\t\tnls.localize('editor.autoSurround.quotes', \"Surround with quotes but not brackets.\"),\n\t\t\t\tnls.localize('editor.autoSurround.brackets', \"Surround with brackets but not quotes.\"),\n\t\t\t\t''\n\t\t\t],\n\t\t\tdescription: nls.localize('autoSurround', \"Controls whether the editor should automatically surround selections when typing quotes or brackets.\")\n\t\t}\n\t)),\n\tbracketPairColorization: register(new BracketPairColorization()),\n\tbracketPairGuides: register(new GuideOptions()),\n\tstickyTabStops: register(new EditorBooleanOption(\n\t\tEditorOption.stickyTabStops, 'stickyTabStops', false,\n\t\t{ description: nls.localize('stickyTabStops', \"Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.\") }\n\t)),\n\tcodeLens: register(new EditorBooleanOption(\n\t\tEditorOption.codeLens, 'codeLens', true,\n\t\t{ description: nls.localize('codeLens', \"Controls whether the editor shows CodeLens.\") }\n\t)),\n\tcodeLensFontFamily: register(new EditorStringOption(\n\t\tEditorOption.codeLensFontFamily, 'codeLensFontFamily', '',\n\t\t{ description: nls.localize('codeLensFontFamily', \"Controls the font family for CodeLens.\") }\n\t)),\n\tcodeLensFontSize: register(new EditorIntOption(EditorOption.codeLensFontSize, 'codeLensFontSize', 0, 0, 100, {\n\t\ttype: 'number',\n\t\tdefault: 0,\n\t\tminimum: 0,\n\t\tmaximum: 100,\n\t\tmarkdownDescription: nls.localize('codeLensFontSize', \"Controls the font size in pixels for CodeLens. When set to 0, 90% of `#editor.fontSize#` is used.\")\n\t})),\n\tcolorDecorators: register(new EditorBooleanOption(\n\t\tEditorOption.colorDecorators, 'colorDecorators', true,\n\t\t{ description: nls.localize('colorDecorators', \"Controls whether the editor should render the inline color decorators and color picker.\") }\n\t)),\n\tcolorDecoratorActivatedOn: register(new EditorStringEnumOption(EditorOption.colorDecoratorsActivatedOn, 'colorDecoratorsActivatedOn', 'clickAndHover' as 'clickAndHover' | 'hover' | 'click', ['clickAndHover', 'hover', 'click'] as const, {\n\t\tenumDescriptions: [\n\t\t\tnls.localize('editor.colorDecoratorActivatedOn.clickAndHover', \"Make the color picker appear both on click and hover of the color decorator\"),\n\t\t\tnls.localize('editor.colorDecoratorActivatedOn.hover', \"Make the color picker appear on hover of the color decorator\"),\n\t\t\tnls.localize('editor.colorDecoratorActivatedOn.click', \"Make the color picker appear on click of the color decorator\")\n\t\t],\n\t\tdescription: nls.localize('colorDecoratorActivatedOn', \"Controls the condition to make a color picker appear from a color decorator.\")\n\t})),\n\tcolorDecoratorsLimit: register(new EditorIntOption(\n\t\tEditorOption.colorDecoratorsLimit, 'colorDecoratorsLimit', 500, 1, 1000000,\n\t\t{\n\t\t\tmarkdownDescription: nls.localize('colorDecoratorsLimit', \"Controls the max number of color decorators that can be rendered in an editor at once.\")\n\t\t}\n\t)),\n\tcolumnSelection: register(new EditorBooleanOption(\n\t\tEditorOption.columnSelection, 'columnSelection', false,\n\t\t{ description: nls.localize('columnSelection', \"Enable that the selection with the mouse and keys is doing column selection.\") }\n\t)),\n\tcomments: register(new EditorComments()),\n\tcontextmenu: register(new EditorBooleanOption(\n\t\tEditorOption.contextmenu, 'contextmenu', true,\n\t)),\n\tcopyWithSyntaxHighlighting: register(new EditorBooleanOption(\n\t\tEditorOption.copyWithSyntaxHighlighting, 'copyWithSyntaxHighlighting', true,\n\t\t{ description: nls.localize('copyWithSyntaxHighlighting', \"Controls whether syntax highlighting should be copied into the clipboard.\") }\n\t)),\n\tcursorBlinking: register(new EditorEnumOption(\n\t\tEditorOption.cursorBlinking, 'cursorBlinking',\n\t\tTextEditorCursorBlinkingStyle.Blink, 'blink',\n\t\t['blink', 'smooth', 'phase', 'expand', 'solid'],\n\t\tcursorBlinkingStyleFromString,\n\t\t{ description: nls.localize('cursorBlinking', \"Control the cursor animation style.\") }\n\t)),\n\tcursorSmoothCaretAnimation: register(new EditorStringEnumOption(\n\t\tEditorOption.cursorSmoothCaretAnimation, 'cursorSmoothCaretAnimation',\n\t\t'off' as 'off' | 'explicit' | 'on',\n\t\t['off', 'explicit', 'on'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('cursorSmoothCaretAnimation.off', \"Smooth caret animation is disabled.\"),\n\t\t\t\tnls.localize('cursorSmoothCaretAnimation.explicit', \"Smooth caret animation is enabled only when the user moves the cursor with an explicit gesture.\"),\n\t\t\t\tnls.localize('cursorSmoothCaretAnimation.on', \"Smooth caret animation is always enabled.\")\n\t\t\t],\n\t\t\tdescription: nls.localize('cursorSmoothCaretAnimation', \"Controls whether the smooth caret animation should be enabled.\")\n\t\t}\n\t)),\n\tcursorStyle: register(new EditorEnumOption(\n\t\tEditorOption.cursorStyle, 'cursorStyle',\n\t\tTextEditorCursorStyle.Line, 'line',\n\t\t['line', 'block', 'underline', 'line-thin', 'block-outline', 'underline-thin'],\n\t\tcursorStyleFromString,\n\t\t{ description: nls.localize('cursorStyle', \"Controls the cursor style in insert input mode.\") }\n\t)),\n\tovertypeCursorStyle: register(new EditorEnumOption(\n\t\tEditorOption.overtypeCursorStyle, 'overtypeCursorStyle',\n\t\tTextEditorCursorStyle.Block, 'block',\n\t\t['line', 'block', 'underline', 'line-thin', 'block-outline', 'underline-thin'],\n\t\tcursorStyleFromString,\n\t\t{ description: nls.localize('overtypeCursorStyle', \"Controls the cursor style in overtype input mode.\") }\n\t)),\n\tcursorSurroundingLines: register(new EditorIntOption(\n\t\tEditorOption.cursorSurroundingLines, 'cursorSurroundingLines',\n\t\t0, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{ description: nls.localize('cursorSurroundingLines', \"Controls the minimal number of visible leading lines (minimum 0) and trailing lines (minimum 1) surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.\") }\n\t)),\n\tcursorSurroundingLinesStyle: register(new EditorStringEnumOption(\n\t\tEditorOption.cursorSurroundingLinesStyle, 'cursorSurroundingLinesStyle',\n\t\t'default' as 'default' | 'all',\n\t\t['default', 'all'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('cursorSurroundingLinesStyle.default', \"`cursorSurroundingLines` is enforced only when triggered via the keyboard or API.\"),\n\t\t\t\tnls.localize('cursorSurroundingLinesStyle.all', \"`cursorSurroundingLines` is enforced always.\")\n\t\t\t],\n\t\t\tmarkdownDescription: nls.localize('cursorSurroundingLinesStyle', \"Controls when `#editor.cursorSurroundingLines#` should be enforced.\")\n\t\t}\n\t)),\n\tcursorWidth: register(new EditorIntOption(\n\t\tEditorOption.cursorWidth, 'cursorWidth',\n\t\t0, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{ markdownDescription: nls.localize('cursorWidth', \"Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.\") }\n\t)),\n\tcursorHeight: register(new EditorIntOption(\n\t\tEditorOption.cursorHeight, 'cursorHeight',\n\t\t0, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{ markdownDescription: nls.localize('cursorHeight', \"Controls the height of the cursor when `#editor.cursorStyle#` is set to `line`. Cursor's max height depends on line height.\") }\n\t)),\n\tdisableLayerHinting: register(new EditorBooleanOption(\n\t\tEditorOption.disableLayerHinting, 'disableLayerHinting', false,\n\t)),\n\tdisableMonospaceOptimizations: register(new EditorBooleanOption(\n\t\tEditorOption.disableMonospaceOptimizations, 'disableMonospaceOptimizations', false\n\t)),\n\tdomReadOnly: register(new EditorBooleanOption(\n\t\tEditorOption.domReadOnly, 'domReadOnly', false,\n\t)),\n\tdragAndDrop: register(new EditorBooleanOption(\n\t\tEditorOption.dragAndDrop, 'dragAndDrop', true,\n\t\t{ description: nls.localize('dragAndDrop', \"Controls whether the editor should allow moving selections via drag and drop.\") }\n\t)),\n\temptySelectionClipboard: register(new EditorEmptySelectionClipboard()),\n\tdropIntoEditor: register(new EditorDropIntoEditor()),\n\teditContext: register(new EditorBooleanOption(\n\t\tEditorOption.editContext, 'editContext', true,\n\t\t{\n\t\t\tdescription: nls.localize('editContext', \"Sets whether the EditContext API should be used instead of the text area to power input in the editor.\"),\n\t\t\tincluded: platform.isChrome || platform.isEdge || platform.isNative\n\t\t}\n\t)),\n\trenderRichScreenReaderContent: register(new EditorBooleanOption(\n\t\tEditorOption.renderRichScreenReaderContent, 'renderRichScreenReaderContent', false,\n\t\t{\n\t\t\tmarkdownDescription: nls.localize('renderRichScreenReaderContent', \"Whether to render rich screen reader content when the `#editor.editContext#` setting is enabled.\"),\n\t\t}\n\t)),\n\tstickyScroll: register(new EditorStickyScroll()),\n\texperimentalGpuAcceleration: register(new EditorStringEnumOption(\n\t\tEditorOption.experimentalGpuAcceleration, 'experimentalGpuAcceleration',\n\t\t'off' as 'off' | 'on',\n\t\t['off', 'on'] as const,\n\t\t{\n\t\t\ttags: ['experimental'],\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('experimentalGpuAcceleration.off', \"Use regular DOM-based rendering.\"),\n\t\t\t\tnls.localize('experimentalGpuAcceleration.on', \"Use GPU acceleration.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('experimentalGpuAcceleration', \"Controls whether to use the experimental GPU acceleration to render the editor.\")\n\t\t}\n\t)),\n\texperimentalWhitespaceRendering: register(new EditorStringEnumOption(\n\t\tEditorOption.experimentalWhitespaceRendering, 'experimentalWhitespaceRendering',\n\t\t'svg' as 'svg' | 'font' | 'off',\n\t\t['svg', 'font', 'off'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('experimentalWhitespaceRendering.svg', \"Use a new rendering method with svgs.\"),\n\t\t\t\tnls.localize('experimentalWhitespaceRendering.font', \"Use a new rendering method with font characters.\"),\n\t\t\t\tnls.localize('experimentalWhitespaceRendering.off', \"Use the stable rendering method.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('experimentalWhitespaceRendering', \"Controls whether whitespace is rendered with a new, experimental method.\")\n\t\t}\n\t)),\n\textraEditorClassName: register(new EditorStringOption(\n\t\tEditorOption.extraEditorClassName, 'extraEditorClassName', '',\n\t)),\n\tfastScrollSensitivity: register(new EditorFloatOption(\n\t\tEditorOption.fastScrollSensitivity, 'fastScrollSensitivity',\n\t\t5, x => (x <= 0 ? 5 : x),\n\t\t{ markdownDescription: nls.localize('fastScrollSensitivity', \"Scrolling speed multiplier when pressing `Alt`.\") }\n\t)),\n\tfind: register(new EditorFind()),\n\tfixedOverflowWidgets: register(new EditorBooleanOption(\n\t\tEditorOption.fixedOverflowWidgets, 'fixedOverflowWidgets', false,\n\t)),\n\tfolding: register(new EditorBooleanOption(\n\t\tEditorOption.folding, 'folding', true,\n\t\t{ description: nls.localize('folding', \"Controls whether the editor has code folding enabled.\") }\n\t)),\n\tfoldingStrategy: register(new EditorStringEnumOption(\n\t\tEditorOption.foldingStrategy, 'foldingStrategy',\n\t\t'auto' as 'auto' | 'indentation',\n\t\t['auto', 'indentation'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('foldingStrategy.auto', \"Use a language-specific folding strategy if available, else the indentation-based one.\"),\n\t\t\t\tnls.localize('foldingStrategy.indentation', \"Use the indentation-based folding strategy.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('foldingStrategy', \"Controls the strategy for computing folding ranges.\")\n\t\t}\n\t)),\n\tfoldingHighlight: register(new EditorBooleanOption(\n\t\tEditorOption.foldingHighlight, 'foldingHighlight', true,\n\t\t{ description: nls.localize('foldingHighlight', \"Controls whether the editor should highlight folded ranges.\") }\n\t)),\n\tfoldingImportsByDefault: register(new EditorBooleanOption(\n\t\tEditorOption.foldingImportsByDefault, 'foldingImportsByDefault', false,\n\t\t{ description: nls.localize('foldingImportsByDefault', \"Controls whether the editor automatically collapses import ranges.\") }\n\t)),\n\tfoldingMaximumRegions: register(new EditorIntOption(\n\t\tEditorOption.foldingMaximumRegions, 'foldingMaximumRegions',\n\t\t5000, 10, 65000, // limit must be less than foldingRanges MAX_FOLDING_REGIONS\n\t\t{ description: nls.localize('foldingMaximumRegions', \"The maximum number of foldable regions. Increasing this value may result in the editor becoming less responsive when the current source has a large number of foldable regions.\") }\n\t)),\n\tunfoldOnClickAfterEndOfLine: register(new EditorBooleanOption(\n\t\tEditorOption.unfoldOnClickAfterEndOfLine, 'unfoldOnClickAfterEndOfLine', false,\n\t\t{ description: nls.localize('unfoldOnClickAfterEndOfLine', \"Controls whether clicking on the empty content after a folded line will unfold the line.\") }\n\t)),\n\tfontFamily: register(new EditorStringOption(\n\t\tEditorOption.fontFamily, 'fontFamily', EDITOR_FONT_DEFAULTS.fontFamily,\n\t\t{ description: nls.localize('fontFamily', \"Controls the font family.\") }\n\t)),\n\tfontInfo: register(new EditorFontInfo()),\n\tfontLigatures2: register(new EditorFontLigatures()),\n\tfontSize: register(new EditorFontSize()),\n\tfontWeight: register(new EditorFontWeight()),\n\tfontVariations: register(new EditorFontVariations()),\n\tformatOnPaste: register(new EditorBooleanOption(\n\t\tEditorOption.formatOnPaste, 'formatOnPaste', false,\n\t\t{ description: nls.localize('formatOnPaste', \"Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.\") }\n\t)),\n\tformatOnType: register(new EditorBooleanOption(\n\t\tEditorOption.formatOnType, 'formatOnType', false,\n\t\t{ description: nls.localize('formatOnType', \"Controls whether the editor should automatically format the line after typing.\") }\n\t)),\n\tglyphMargin: register(new EditorBooleanOption(\n\t\tEditorOption.glyphMargin, 'glyphMargin', true,\n\t\t{ description: nls.localize('glyphMargin', \"Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.\") }\n\t)),\n\tgotoLocation: register(new EditorGoToLocation()),\n\thideCursorInOverviewRuler: register(new EditorBooleanOption(\n\t\tEditorOption.hideCursorInOverviewRuler, 'hideCursorInOverviewRuler', false,\n\t\t{ description: nls.localize('hideCursorInOverviewRuler', \"Controls whether the cursor should be hidden in the overview ruler.\") }\n\t)),\n\thover: register(new EditorHover()),\n\tinDiffEditor: register(new EditorBooleanOption(\n\t\tEditorOption.inDiffEditor, 'inDiffEditor', false\n\t)),\n\tinertialScroll: register(new EditorBooleanOption(\n\t\tEditorOption.inertialScroll, 'inertialScroll', false,\n\t\t{ description: nls.localize('inertialScroll', \"Make scrolling inertial - mostly useful with touchpad on linux.\") }\n\t)),\n\tletterSpacing: register(new EditorFloatOption(\n\t\tEditorOption.letterSpacing, 'letterSpacing',\n\t\tEDITOR_FONT_DEFAULTS.letterSpacing, x => EditorFloatOption.clamp(x, -5, 20),\n\t\t{ description: nls.localize('letterSpacing', \"Controls the letter spacing in pixels.\") }\n\t)),\n\tlightbulb: register(new EditorLightbulb()),\n\tlineDecorationsWidth: register(new EditorLineDecorationsWidth()),\n\tlineHeight: register(new EditorLineHeight()),\n\tlineNumbers: register(new EditorRenderLineNumbersOption()),\n\tlineNumbersMinChars: register(new EditorIntOption(\n\t\tEditorOption.lineNumbersMinChars, 'lineNumbersMinChars',\n\t\t5, 1, 300\n\t)),\n\tlinkedEditing: register(new EditorBooleanOption(\n\t\tEditorOption.linkedEditing, 'linkedEditing', false,\n\t\t{ description: nls.localize('linkedEditing', \"Controls whether the editor has linked editing enabled. Depending on the language, related symbols such as HTML tags, are updated while editing.\") }\n\t)),\n\tlinks: register(new EditorBooleanOption(\n\t\tEditorOption.links, 'links', true,\n\t\t{ description: nls.localize('links', \"Controls whether the editor should detect links and make them clickable.\") }\n\t)),\n\tmatchBrackets: register(new EditorStringEnumOption(\n\t\tEditorOption.matchBrackets, 'matchBrackets',\n\t\t'always' as 'never' | 'near' | 'always',\n\t\t['always', 'near', 'never'] as const,\n\t\t{ description: nls.localize('matchBrackets', \"Highlight matching brackets.\") }\n\t)),\n\tminimap: register(new EditorMinimap()),\n\tmouseStyle: register(new EditorStringEnumOption(\n\t\tEditorOption.mouseStyle, 'mouseStyle',\n\t\t'text' as 'text' | 'default' | 'copy',\n\t\t['text', 'default', 'copy'] as const,\n\t)),\n\tmouseWheelScrollSensitivity: register(new EditorFloatOption(\n\t\tEditorOption.mouseWheelScrollSensitivity, 'mouseWheelScrollSensitivity',\n\t\t1, x => (x === 0 ? 1 : x),\n\t\t{ markdownDescription: nls.localize('mouseWheelScrollSensitivity', \"A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\") }\n\t)),\n\tmouseWheelZoom: register(new EditorBooleanOption(\n\t\tEditorOption.mouseWheelZoom, 'mouseWheelZoom', false,\n\t\t{\n\t\t\tmarkdownDescription: platform.isMacintosh\n\t\t\t\t? nls.localize('mouseWheelZoom.mac', \"Zoom the font of the editor when using mouse wheel and holding `Cmd`.\")\n\t\t\t\t: nls.localize('mouseWheelZoom', \"Zoom the font of the editor when using mouse wheel and holding `Ctrl`.\")\n\t\t}\n\t)),\n\tmultiCursorMergeOverlapping: register(new EditorBooleanOption(\n\t\tEditorOption.multiCursorMergeOverlapping, 'multiCursorMergeOverlapping', true,\n\t\t{ description: nls.localize('multiCursorMergeOverlapping', \"Merge multiple cursors when they are overlapping.\") }\n\t)),\n\tmultiCursorModifier: register(new EditorEnumOption(\n\t\tEditorOption.multiCursorModifier, 'multiCursorModifier',\n\t\t'altKey', 'alt',\n\t\t['ctrlCmd', 'alt'],\n\t\t_multiCursorModifierFromString,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('multiCursorModifier.ctrlCmd', \"Maps to `Control` on Windows and Linux and to `Command` on macOS.\"),\n\t\t\t\tnls.localize('multiCursorModifier.alt', \"Maps to `Alt` on Windows and Linux and to `Option` on macOS.\")\n\t\t\t],\n\t\t\tmarkdownDescription: nls.localize({\n\t\t\t\tkey: 'multiCursorModifier',\n\t\t\t\tcomment: [\n\t\t\t\t\t'- `ctrlCmd` refers to a value the setting can take and should not be localized.',\n\t\t\t\t\t'- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized.'\n\t\t\t\t]\n\t\t\t}, \"The modifier to be used to add multiple cursors with the mouse. The Go to Definition and Open Link mouse gestures will adapt such that they do not conflict with the [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).\")\n\t\t}\n\t)),\n\tmouseMiddleClickAction: register(new EditorStringEnumOption(\n\t\tEditorOption.mouseMiddleClickAction, 'mouseMiddleClickAction', 'default' as MouseMiddleClickAction,\n\t\t['default', 'openLink', 'ctrlLeftClick'] as MouseMiddleClickAction[],\n\t\t{ description: nls.localize('mouseMiddleClickAction', \"Controls what happens when middle mouse button is clicked in the editor.\") }\n\t)),\n\tmultiCursorPaste: register(new EditorStringEnumOption(\n\t\tEditorOption.multiCursorPaste, 'multiCursorPaste',\n\t\t'spread' as 'spread' | 'full',\n\t\t['spread', 'full'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('multiCursorPaste.spread', \"Each cursor pastes a single line of the text.\"),\n\t\t\t\tnls.localize('multiCursorPaste.full', \"Each cursor pastes the full text.\")\n\t\t\t],\n\t\t\tmarkdownDescription: nls.localize('multiCursorPaste', \"Controls pasting when the line count of the pasted text matches the cursor count.\")\n\t\t}\n\t)),\n\tmultiCursorLimit: register(new EditorIntOption(\n\t\tEditorOption.multiCursorLimit, 'multiCursorLimit', 10000, 1, 100000,\n\t\t{\n\t\t\tmarkdownDescription: nls.localize('multiCursorLimit', \"Controls the max number of cursors that can be in an active editor at once.\")\n\t\t}\n\t)),\n\toccurrencesHighlight: register(new EditorStringEnumOption(\n\t\tEditorOption.occurrencesHighlight, 'occurrencesHighlight',\n\t\t'singleFile' as 'off' | 'singleFile' | 'multiFile',\n\t\t['off', 'singleFile', 'multiFile'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('occurrencesHighlight.off', \"Does not highlight occurrences.\"),\n\t\t\t\tnls.localize('occurrencesHighlight.singleFile', \"Highlights occurrences only in the current file.\"),\n\t\t\t\tnls.localize('occurrencesHighlight.multiFile', \"Experimental: Highlights occurrences across all valid open files.\")\n\t\t\t],\n\t\t\tmarkdownDescription: nls.localize('occurrencesHighlight', \"Controls whether occurrences should be highlighted across open files.\")\n\t\t}\n\t)),\n\toccurrencesHighlightDelay: register(new EditorIntOption(\n\t\tEditorOption.occurrencesHighlightDelay, 'occurrencesHighlightDelay',\n\t\t0, 0, 2000,\n\t\t{\n\t\t\tdescription: nls.localize('occurrencesHighlightDelay', \"Controls the delay in milliseconds after which occurrences are highlighted.\"),\n\t\t\ttags: ['preview']\n\t\t}\n\t)),\n\tovertypeOnPaste: register(new EditorBooleanOption(\n\t\tEditorOption.overtypeOnPaste, 'overtypeOnPaste', true,\n\t\t{ description: nls.localize('overtypeOnPaste', \"Controls whether pasting should overtype.\") }\n\t)),\n\toverviewRulerBorder: register(new EditorBooleanOption(\n\t\tEditorOption.overviewRulerBorder, 'overviewRulerBorder', true,\n\t\t{ description: nls.localize('overviewRulerBorder', \"Controls whether a border should be drawn around the overview ruler.\") }\n\t)),\n\toverviewRulerLanes: register(new EditorIntOption(\n\t\tEditorOption.overviewRulerLanes, 'overviewRulerLanes',\n\t\t3, 0, 3\n\t)),\n\tpadding: register(new EditorPadding()),\n\tpasteAs: register(new EditorPasteAs()),\n\tparameterHints: register(new EditorParameterHints()),\n\tpeekWidgetDefaultFocus: register(new EditorStringEnumOption(\n\t\tEditorOption.peekWidgetDefaultFocus, 'peekWidgetDefaultFocus',\n\t\t'tree' as 'tree' | 'editor',\n\t\t['tree', 'editor'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('peekWidgetDefaultFocus.tree', \"Focus the tree when opening peek\"),\n\t\t\t\tnls.localize('peekWidgetDefaultFocus.editor', \"Focus the editor when opening peek\")\n\t\t\t],\n\t\t\tdescription: nls.localize('peekWidgetDefaultFocus', \"Controls whether to focus the inline editor or the tree in the peek widget.\")\n\t\t}\n\t)),\n\tplaceholder: register(new PlaceholderOption()),\n\tdefinitionLinkOpensInPeek: register(new EditorBooleanOption(\n\t\tEditorOption.definitionLinkOpensInPeek, 'definitionLinkOpensInPeek', false,\n\t\t{ description: nls.localize('definitionLinkOpensInPeek', \"Controls whether the Go to Definition mouse gesture always opens the peek widget.\") }\n\t)),\n\tquickSuggestions: register(new EditorQuickSuggestions()),\n\tquickSuggestionsDelay: register(new EditorIntOption(\n\t\tEditorOption.quickSuggestionsDelay, 'quickSuggestionsDelay',\n\t\t10, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{\n\t\t\tdescription: nls.localize('quickSuggestionsDelay', \"Controls the delay in milliseconds after which quick suggestions will show up.\"),\n\t\t\texperiment: {\n\t\t\t\tmode: 'auto'\n\t\t\t}\n\t\t}\n\t)),\n\treadOnly: register(new EditorBooleanOption(\n\t\tEditorOption.readOnly, 'readOnly', false,\n\t)),\n\treadOnlyMessage: register(new ReadonlyMessage()),\n\trenameOnType: register(new EditorBooleanOption(\n\t\tEditorOption.renameOnType, 'renameOnType', false,\n\t\t{ description: nls.localize('renameOnType', \"Controls whether the editor auto renames on type.\"), markdownDeprecationMessage: nls.localize('renameOnTypeDeprecate', \"Deprecated, use `#editor.linkedEditing#` instead.\") }\n\t)),\n\trenderControlCharacters: register(new EditorBooleanOption(\n\t\tEditorOption.renderControlCharacters, 'renderControlCharacters', true,\n\t\t{ description: nls.localize('renderControlCharacters', \"Controls whether the editor should render control characters.\"), restricted: true }\n\t)),\n\trenderFinalNewline: register(new EditorStringEnumOption(\n\t\tEditorOption.renderFinalNewline, 'renderFinalNewline',\n\t\t(platform.isLinux ? 'dimmed' : 'on') as 'off' | 'on' | 'dimmed',\n\t\t['off', 'on', 'dimmed'] as const,\n\t\t{ description: nls.localize('renderFinalNewline', \"Render last line number when the file ends with a newline.\") }\n\t)),\n\trenderLineHighlight: register(new EditorStringEnumOption(\n\t\tEditorOption.renderLineHighlight, 'renderLineHighlight',\n\t\t'line' as 'none' | 'gutter' | 'line' | 'all',\n\t\t['none', 'gutter', 'line', 'all'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\tnls.localize('renderLineHighlight.all', \"Highlights both the gutter and the current line.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('renderLineHighlight', \"Controls how the editor should render the current line highlight.\")\n\t\t}\n\t)),\n\trenderLineHighlightOnlyWhenFocus: register(new EditorBooleanOption(\n\t\tEditorOption.renderLineHighlightOnlyWhenFocus, 'renderLineHighlightOnlyWhenFocus', false,\n\t\t{ description: nls.localize('renderLineHighlightOnlyWhenFocus', \"Controls if the editor should render the current line highlight only when the editor is focused.\") }\n\t)),\n\trenderValidationDecorations: register(new EditorStringEnumOption(\n\t\tEditorOption.renderValidationDecorations, 'renderValidationDecorations',\n\t\t'editable' as 'editable' | 'on' | 'off',\n\t\t['editable', 'on', 'off'] as const\n\t)),\n\trenderWhitespace: register(new EditorStringEnumOption(\n\t\tEditorOption.renderWhitespace, 'renderWhitespace',\n\t\t'selection' as 'selection' | 'none' | 'boundary' | 'trailing' | 'all',\n\t\t['none', 'boundary', 'selection', 'trailing', 'all'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('renderWhitespace.boundary', \"Render whitespace characters except for single spaces between words.\"),\n\t\t\t\tnls.localize('renderWhitespace.selection', \"Render whitespace characters only on selected text.\"),\n\t\t\t\tnls.localize('renderWhitespace.trailing', \"Render only trailing whitespace characters.\"),\n\t\t\t\t''\n\t\t\t],\n\t\t\tdescription: nls.localize('renderWhitespace', \"Controls how the editor should render whitespace characters.\")\n\t\t}\n\t)),\n\trevealHorizontalRightPadding: register(new EditorIntOption(\n\t\tEditorOption.revealHorizontalRightPadding, 'revealHorizontalRightPadding',\n\t\t15, 0, 1000,\n\t)),\n\troundedSelection: register(new EditorBooleanOption(\n\t\tEditorOption.roundedSelection, 'roundedSelection', true,\n\t\t{ description: nls.localize('roundedSelection', \"Controls whether selections should have rounded corners.\") }\n\t)),\n\trulers: register(new EditorRulers()),\n\tscrollbar: register(new EditorScrollbar()),\n\tscrollBeyondLastColumn: register(new EditorIntOption(\n\t\tEditorOption.scrollBeyondLastColumn, 'scrollBeyondLastColumn',\n\t\t4, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{ description: nls.localize('scrollBeyondLastColumn', \"Controls the number of extra characters beyond which the editor will scroll horizontally.\") }\n\t)),\n\tscrollBeyondLastLine: register(new EditorBooleanOption(\n\t\tEditorOption.scrollBeyondLastLine, 'scrollBeyondLastLine', true,\n\t\t{ description: nls.localize('scrollBeyondLastLine', \"Controls whether the editor will scroll beyond the last line.\") }\n\t)),\n\tscrollOnMiddleClick: register(new EditorBooleanOption(\n\t\tEditorOption.scrollOnMiddleClick, 'scrollOnMiddleClick', false,\n\t\t{ description: nls.localize('scrollOnMiddleClick', \"Controls whether the editor will scroll when the middle button is pressed.\") }\n\t)),\n\tscrollPredominantAxis: register(new EditorBooleanOption(\n\t\tEditorOption.scrollPredominantAxis, 'scrollPredominantAxis', true,\n\t\t{ description: nls.localize('scrollPredominantAxis', \"Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.\") }\n\t)),\n\tselectionClipboard: register(new EditorBooleanOption(\n\t\tEditorOption.selectionClipboard, 'selectionClipboard', true,\n\t\t{\n\t\t\tdescription: nls.localize('selectionClipboard', \"Controls whether the Linux primary clipboard should be supported.\"),\n\t\t\tincluded: platform.isLinux\n\t\t}\n\t)),\n\tselectionHighlight: register(new EditorBooleanOption(\n\t\tEditorOption.selectionHighlight, 'selectionHighlight', true,\n\t\t{ description: nls.localize('selectionHighlight', \"Controls whether the editor should highlight matches similar to the selection.\") }\n\t)),\n\tselectionHighlightMaxLength: register(new EditorIntOption(\n\t\tEditorOption.selectionHighlightMaxLength, 'selectionHighlightMaxLength',\n\t\t200, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{ description: nls.localize('selectionHighlightMaxLength', \"Controls how many characters can be in the selection before similiar matches are not highlighted. Set to zero for unlimited.\") }\n\t)),\n\tselectionHighlightMultiline: register(new EditorBooleanOption(\n\t\tEditorOption.selectionHighlightMultiline, 'selectionHighlightMultiline', false,\n\t\t{ description: nls.localize('selectionHighlightMultiline', \"Controls whether the editor should highlight selection matches that span multiple lines.\") }\n\t)),\n\tselectOnLineNumbers: register(new EditorBooleanOption(\n\t\tEditorOption.selectOnLineNumbers, 'selectOnLineNumbers', true,\n\t)),\n\tshowFoldingControls: register(new EditorStringEnumOption(\n\t\tEditorOption.showFoldingControls, 'showFoldingControls',\n\t\t'mouseover' as 'always' | 'never' | 'mouseover',\n\t\t['always', 'never', 'mouseover'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('showFoldingControls.always', \"Always show the folding controls.\"),\n\t\t\t\tnls.localize('showFoldingControls.never', \"Never show the folding controls and reduce the gutter size.\"),\n\t\t\t\tnls.localize('showFoldingControls.mouseover', \"Only show the folding controls when the mouse is over the gutter.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('showFoldingControls', \"Controls when the folding controls on the gutter are shown.\")\n\t\t}\n\t)),\n\tshowUnused: register(new EditorBooleanOption(\n\t\tEditorOption.showUnused, 'showUnused', true,\n\t\t{ description: nls.localize('showUnused', \"Controls fading out of unused code.\") }\n\t)),\n\tshowDeprecated: register(new EditorBooleanOption(\n\t\tEditorOption.showDeprecated, 'showDeprecated', true,\n\t\t{ description: nls.localize('showDeprecated', \"Controls strikethrough deprecated variables.\") }\n\t)),\n\tinlayHints: register(new EditorInlayHints()),\n\tsnippetSuggestions: register(new EditorStringEnumOption(\n\t\tEditorOption.snippetSuggestions, 'snippetSuggestions',\n\t\t'inline' as 'top' | 'bottom' | 'inline' | 'none',\n\t\t['top', 'bottom', 'inline', 'none'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('snippetSuggestions.top', \"Show snippet suggestions on top of other suggestions.\"),\n\t\t\t\tnls.localize('snippetSuggestions.bottom', \"Show snippet suggestions below other suggestions.\"),\n\t\t\t\tnls.localize('snippetSuggestions.inline', \"Show snippets suggestions with other suggestions.\"),\n\t\t\t\tnls.localize('snippetSuggestions.none', \"Do not show snippet suggestions.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('snippetSuggestions', \"Controls whether snippets are shown with other suggestions and how they are sorted.\")\n\t\t}\n\t)),\n\tsmartSelect: register(new SmartSelect()),\n\tsmoothScrolling: register(new EditorBooleanOption(\n\t\tEditorOption.smoothScrolling, 'smoothScrolling', false,\n\t\t{ description: nls.localize('smoothScrolling', \"Controls whether the editor will scroll using an animation.\") }\n\t)),\n\tstopRenderingLineAfter: register(new EditorIntOption(\n\t\tEditorOption.stopRenderingLineAfter, 'stopRenderingLineAfter',\n\t\t10000, -1, Constants.MAX_SAFE_SMALL_INTEGER,\n\t)),\n\tsuggest: register(new EditorSuggest()),\n\tinlineSuggest: register(new InlineEditorSuggest()),\n\tinlineCompletionsAccessibilityVerbose: register(new EditorBooleanOption(EditorOption.inlineCompletionsAccessibilityVerbose, 'inlineCompletionsAccessibilityVerbose', false,\n\t\t{ description: nls.localize('inlineCompletionsAccessibilityVerbose', \"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\") })),\n\tsuggestFontSize: register(new EditorIntOption(\n\t\tEditorOption.suggestFontSize, 'suggestFontSize',\n\t\t0, 0, 1000,\n\t\t{ markdownDescription: nls.localize('suggestFontSize', \"Font size for the suggest widget. When set to {0}, the value of {1} is used.\", '`0`', '`#editor.fontSize#`') }\n\t)),\n\tsuggestLineHeight: register(new EditorIntOption(\n\t\tEditorOption.suggestLineHeight, 'suggestLineHeight',\n\t\t0, 0, 1000,\n\t\t{ markdownDescription: nls.localize('suggestLineHeight', \"Line height for the suggest widget. When set to {0}, the value of {1} is used. The minimum value is 8.\", '`0`', '`#editor.lineHeight#`') }\n\t)),\n\tsuggestOnTriggerCharacters: register(new EditorBooleanOption(\n\t\tEditorOption.suggestOnTriggerCharacters, 'suggestOnTriggerCharacters', true,\n\t\t{ description: nls.localize('suggestOnTriggerCharacters', \"Controls whether suggestions should automatically show up when typing trigger characters.\") }\n\t)),\n\tsuggestSelection: register(new EditorStringEnumOption(\n\t\tEditorOption.suggestSelection, 'suggestSelection',\n\t\t'first' as 'first' | 'recentlyUsed' | 'recentlyUsedByPrefix',\n\t\t['first', 'recentlyUsed', 'recentlyUsedByPrefix'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('suggestSelection.first', \"Always select the first suggestion.\"),\n\t\t\t\tnls.localize('suggestSelection.recentlyUsed', \"Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently.\"),\n\t\t\t\tnls.localize('suggestSelection.recentlyUsedByPrefix', \"Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('suggestSelection', \"Controls how suggestions are pre-selected when showing the suggest list.\")\n\t\t}\n\t)),\n\ttabCompletion: register(new EditorStringEnumOption(\n\t\tEditorOption.tabCompletion, 'tabCompletion',\n\t\t'off' as 'on' | 'off' | 'onlySnippets',\n\t\t['on', 'off', 'onlySnippets'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('tabCompletion.on', \"Tab complete will insert the best matching suggestion when pressing tab.\"),\n\t\t\t\tnls.localize('tabCompletion.off', \"Disable tab completions.\"),\n\t\t\t\tnls.localize('tabCompletion.onlySnippets', \"Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('tabCompletion', \"Enables tab completions.\")\n\t\t}\n\t)),\n\ttabIndex: register(new EditorIntOption(\n\t\tEditorOption.tabIndex, 'tabIndex',\n\t\t0, -1, Constants.MAX_SAFE_SMALL_INTEGER\n\t)),\n\ttrimWhitespaceOnDelete: register(new EditorBooleanOption(\n\t\tEditorOption.trimWhitespaceOnDelete, 'trimWhitespaceOnDelete', false,\n\t\t{ description: nls.localize('trimWhitespaceOnDelete', \"Controls whether the editor will also delete the next line's indentation whitespace when deleting a newline.\") }\n\t)),\n\tunicodeHighlight: register(new UnicodeHighlight()),\n\tunusualLineTerminators: register(new EditorStringEnumOption(\n\t\tEditorOption.unusualLineTerminators, 'unusualLineTerminators',\n\t\t'prompt' as 'auto' | 'off' | 'prompt',\n\t\t['auto', 'off', 'prompt'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('unusualLineTerminators.auto', \"Unusual line terminators are automatically removed.\"),\n\t\t\t\tnls.localize('unusualLineTerminators.off', \"Unusual line terminators are ignored.\"),\n\t\t\t\tnls.localize('unusualLineTerminators.prompt', \"Unusual line terminators prompt to be removed.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('unusualLineTerminators', \"Remove unusual line terminators that might cause problems.\")\n\t\t}\n\t)),\n\tuseShadowDOM: register(new EditorBooleanOption(\n\t\tEditorOption.useShadowDOM, 'useShadowDOM', true\n\t)),\n\tuseTabStops: register(new EditorBooleanOption(\n\t\tEditorOption.useTabStops, 'useTabStops', true,\n\t\t{ description: nls.localize('useTabStops', \"Spaces and tabs are inserted and deleted in alignment with tab stops.\") }\n\t)),\n\twordBreak: register(new EditorStringEnumOption(\n\t\tEditorOption.wordBreak, 'wordBreak',\n\t\t'normal' as 'normal' | 'keepAll',\n\t\t['normal', 'keepAll'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('wordBreak.normal', \"Use the default line break rule.\"),\n\t\t\t\tnls.localize('wordBreak.keepAll', \"Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('wordBreak', \"Controls the word break rules used for Chinese/Japanese/Korean (CJK) text.\")\n\t\t}\n\t)),\n\twordSegmenterLocales: register(new WordSegmenterLocales()),\n\twordSeparators: register(new EditorStringOption(\n\t\tEditorOption.wordSeparators, 'wordSeparators', USUAL_WORD_SEPARATORS,\n\t\t{ description: nls.localize('wordSeparators', \"Characters that will be used as word separators when doing word related navigations or operations.\") }\n\t)),\n\twordWrap: register(new EditorStringEnumOption(\n\t\tEditorOption.wordWrap, 'wordWrap',\n\t\t'off' as 'off' | 'on' | 'wordWrapColumn' | 'bounded',\n\t\t['off', 'on', 'wordWrapColumn', 'bounded'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('wordWrap.off', \"Lines will never wrap.\"),\n\t\t\t\tnls.localize('wordWrap.on', \"Lines will wrap at the viewport width.\"),\n\t\t\t\tnls.localize({\n\t\t\t\t\tkey: 'wordWrap.wordWrapColumn',\n\t\t\t\t\tcomment: [\n\t\t\t\t\t\t'- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\n\t\t\t\t\t]\n\t\t\t\t}, \"Lines will wrap at `#editor.wordWrapColumn#`.\"),\n\t\t\t\tnls.localize({\n\t\t\t\t\tkey: 'wordWrap.bounded',\n\t\t\t\t\tcomment: [\n\t\t\t\t\t\t'- viewport means the edge of the visible window size.',\n\t\t\t\t\t\t'- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\n\t\t\t\t\t]\n\t\t\t\t}, \"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize({\n\t\t\t\tkey: 'wordWrap',\n\t\t\t\tcomment: [\n\t\t\t\t\t'- \\'off\\', \\'on\\', \\'wordWrapColumn\\' and \\'bounded\\' refer to values the setting can take and should not be localized.',\n\t\t\t\t\t'- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\n\t\t\t\t]\n\t\t\t}, \"Controls how lines should wrap.\")\n\t\t}\n\t)),\n\twordWrapBreakAfterCharacters: register(new EditorStringOption(\n\t\tEditorOption.wordWrapBreakAfterCharacters, 'wordWrapBreakAfterCharacters',\n\t\t// allow-any-unicode-next-line\n\t\t' \\t})]?|/&.,;¢°′″‰℃、。。、¢,.:;?!%・・ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ァィゥェォャュョッー”〉》」』】〕)]}」',\n\t)),\n\twordWrapBreakBeforeCharacters: register(new EditorStringOption(\n\t\tEditorOption.wordWrapBreakBeforeCharacters, 'wordWrapBreakBeforeCharacters',\n\t\t// allow-any-unicode-next-line\n\t\t'([{‘“〈《「『【〔([{「£¥$£¥++'\n\t)),\n\twordWrapColumn: register(new EditorIntOption(\n\t\tEditorOption.wordWrapColumn, 'wordWrapColumn',\n\t\t80, 1, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{\n\t\t\tmarkdownDescription: nls.localize({\n\t\t\t\tkey: 'wordWrapColumn',\n\t\t\t\tcomment: [\n\t\t\t\t\t'- `editor.wordWrap` refers to a different setting and should not be localized.',\n\t\t\t\t\t'- \\'wordWrapColumn\\' and \\'bounded\\' refer to values the different setting can take and should not be localized.'\n\t\t\t\t]\n\t\t\t}, \"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.\")\n\t\t}\n\t)),\n\twordWrapOverride1: register(new EditorStringEnumOption(\n\t\tEditorOption.wordWrapOverride1, 'wordWrapOverride1',\n\t\t'inherit' as 'off' | 'on' | 'inherit',\n\t\t['off', 'on', 'inherit'] as const\n\t)),\n\twordWrapOverride2: register(new EditorStringEnumOption(\n\t\tEditorOption.wordWrapOverride2, 'wordWrapOverride2',\n\t\t'inherit' as 'off' | 'on' | 'inherit',\n\t\t['off', 'on', 'inherit'] as const\n\t)),\n\twrapOnEscapedLineFeeds: register(new EditorBooleanOption(\n\t\tEditorOption.wrapOnEscapedLineFeeds, 'wrapOnEscapedLineFeeds', false,\n\t\t{ markdownDescription: nls.localize('wrapOnEscapedLineFeeds', \"Controls whether literal `\\\\n` shall trigger a wordWrap when `#editor.wordWrap#` is enabled.\\n\\nFor example:\\n```c\\nchar* str=\\\"hello\\\\nworld\\\"\\n```\\nwill be displayed as\\n```c\\nchar* str=\\\"hello\\\\n\\n world\\\"\\n```\") }\n\t)),\n\n\t// Leave these at the end (because they have dependencies!)\n\teffectiveCursorStyle: register(new EffectiveCursorStyle()),\n\teditorClassName: register(new EditorClassName()),\n\tdefaultColorDecorators: register(new EditorStringEnumOption(\n\t\tEditorOption.defaultColorDecorators, 'defaultColorDecorators', 'auto' as 'auto' | 'always' | 'never',\n\t\t['auto', 'always', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('editor.defaultColorDecorators.auto', \"Show default color decorators only when no extension provides colors decorators.\"),\n\t\t\t\tnls.localize('editor.defaultColorDecorators.always', \"Always show default color decorators.\"),\n\t\t\t\tnls.localize('editor.defaultColorDecorators.never', \"Never show default color decorators.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('defaultColorDecorators', \"Controls whether inline color decorations should be shown using the default document color provider.\")\n\t\t}\n\t)),\n\tpixelRatio: register(new EditorPixelRatio()),\n\ttabFocusMode: register(new EditorBooleanOption(EditorOption.tabFocusMode, 'tabFocusMode', false,\n\t\t{ markdownDescription: nls.localize('tabFocusMode', \"Controls whether the editor receives tabs or defers them to the workbench for navigation.\") }\n\t)),\n\tlayoutInfo: register(new EditorLayoutInfoComputer()),\n\twrappingInfo: register(new EditorWrappingInfoComputer()),\n\twrappingIndent: register(new WrappingIndentOption()),\n\twrappingStrategy: register(new WrappingStrategy()),\n\teffectiveEditContextEnabled: register(new EffectiveEditContextEnabled()),\n\teffectiveAllowVariableFonts: register(new EffectiveAllowVariableFonts())\n};\n\ntype EditorOptionsType = typeof EditorOptions;\ntype FindEditorOptionsKeyById<T extends EditorOption> = { [K in keyof EditorOptionsType]: EditorOptionsType[K]['id'] extends T ? K : never }[keyof EditorOptionsType];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ComputedEditorOptionValue<T extends IEditorOption<any, any>> = T extends IEditorOption<any, infer R> ? R : never;\nexport type FindComputedEditorOptionValueById<T extends EditorOption> = NonNullable<ComputedEditorOptionValue<EditorOptionsType[FindEditorOptionsKeyById<T>]>>;\n\nexport type MouseMiddleClickAction = 'default' | 'openLink' | 'ctrlLeftClick';\n"]}
1
+ {"version":3,"sources":["vs/editor/common/config/editorOptions.ts"],"names":[],"mappings":"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","file":"editorOptions.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as arrays from '../../../base/common/arrays.js';\nimport { IMarkdownString } from '../../../base/common/htmlContent.js';\nimport { IJSONSchema } from '../../../base/common/jsonSchema.js';\nimport * as objects from '../../../base/common/objects.js';\nimport * as platform from '../../../base/common/platform.js';\nimport { ScrollbarVisibility } from '../../../base/common/scrollable.js';\nimport { Constants } from '../../../base/common/uint.js';\nimport { EDITOR_FONT_DEFAULTS, FONT_VARIATION_OFF, FONT_VARIATION_TRANSLATE, FontInfo } from './fontInfo.js';\nimport { EDITOR_MODEL_DEFAULTS } from '../core/misc/textModelDefaults.js';\nimport { USUAL_WORD_SEPARATORS } from '../core/wordHelper.js';\nimport * as nls from '../../../nls.js';\nimport { AccessibilitySupport } from '../../../platform/accessibility/common/accessibility.js';\nimport { IConfigurationPropertySchema } from '../../../platform/configuration/common/configurationRegistry.js';\n\n//#region typed options\n\n/**\n * Configuration options for auto closing quotes and brackets\n */\nexport type EditorAutoClosingStrategy = 'always' | 'languageDefined' | 'beforeWhitespace' | 'never';\n\n/**\n * Configuration options for auto wrapping quotes and brackets\n */\nexport type EditorAutoSurroundStrategy = 'languageDefined' | 'quotes' | 'brackets' | 'never';\n\n/**\n * Configuration options for typing over closing quotes or brackets\n */\nexport type EditorAutoClosingEditStrategy = 'always' | 'auto' | 'never';\n\ntype Unknown<T> = { [K in keyof T]: unknown };\n\n/**\n * Configuration options for auto indentation in the editor\n */\nexport const enum EditorAutoIndentStrategy {\n\tNone = 0,\n\tKeep = 1,\n\tBrackets = 2,\n\tAdvanced = 3,\n\tFull = 4\n}\n\n/**\n * Configuration options for the editor.\n */\nexport interface IEditorOptions {\n\t/**\n\t * This editor is used inside a diff editor.\n\t */\n\tinDiffEditor?: boolean;\n\t/**\n\t * This editor is allowed to use variable line heights.\n\t */\n\tallowVariableLineHeights?: boolean;\n\t/**\n\t * This editor is allowed to use variable font-sizes and font-families\n\t */\n\tallowVariableFonts?: boolean;\n\t/**\n\t * This editor is allowed to use variable font-sizes and font-families in accessibility mode\n\t */\n\tallowVariableFontsInAccessibilityMode?: boolean;\n\t/**\n\t * The aria label for the editor's textarea (when it is focused).\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * Whether the aria-required attribute should be set on the editors textarea.\n\t */\n\tariaRequired?: boolean;\n\t/**\n\t * Control whether a screen reader announces inline suggestion content immediately.\n\t */\n\tscreenReaderAnnounceInlineSuggestion?: boolean;\n\t/**\n\t * The `tabindex` property of the editor's textarea\n\t */\n\ttabIndex?: number;\n\t/**\n\t * Render vertical lines at the specified columns.\n\t * Defaults to empty array.\n\t */\n\trulers?: (number | IRulerOption)[];\n\t/**\n\t * Locales used for segmenting lines into words when doing word related navigations or operations.\n\t *\n\t * Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.).\n\t * Defaults to empty array\n\t */\n\twordSegmenterLocales?: string | string[];\n\t/**\n\t * A string containing the word separators used when doing word navigation.\n\t * Defaults to `~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?\n\t */\n\twordSeparators?: string;\n\t/**\n\t * Enable Linux primary clipboard.\n\t * Defaults to true.\n\t */\n\tselectionClipboard?: boolean;\n\t/**\n\t * Control the rendering of line numbers.\n\t * If it is a function, it will be invoked when rendering a line number and the return value will be rendered.\n\t * Otherwise, if it is a truthy, line numbers will be rendered normally (equivalent of using an identity function).\n\t * Otherwise, line numbers will not be rendered.\n\t * Defaults to `on`.\n\t */\n\tlineNumbers?: LineNumbersType;\n\t/**\n\t * Controls the minimal number of visible leading and trailing lines surrounding the cursor.\n\t * Defaults to 0.\n\t*/\n\tcursorSurroundingLines?: number;\n\t/**\n\t * Controls when `cursorSurroundingLines` should be enforced\n\t * Defaults to `default`, `cursorSurroundingLines` is not enforced when cursor position is changed\n\t * by mouse.\n\t*/\n\tcursorSurroundingLinesStyle?: 'default' | 'all';\n\t/**\n\t * Render last line number when the file ends with a newline.\n\t * Defaults to 'on' for Windows and macOS and 'dimmed' for Linux.\n\t*/\n\trenderFinalNewline?: 'on' | 'off' | 'dimmed';\n\t/**\n\t * Remove unusual line terminators like LINE SEPARATOR (LS), PARAGRAPH SEPARATOR (PS).\n\t * Defaults to 'prompt'.\n\t */\n\tunusualLineTerminators?: 'auto' | 'off' | 'prompt';\n\t/**\n\t * Should the corresponding line be selected when clicking on the line number?\n\t * Defaults to true.\n\t */\n\tselectOnLineNumbers?: boolean;\n\t/**\n\t * Control the width of line numbers, by reserving horizontal space for rendering at least an amount of digits.\n\t * Defaults to 5.\n\t */\n\tlineNumbersMinChars?: number;\n\t/**\n\t * Enable the rendering of the glyph margin.\n\t * Defaults to true in vscode and to false in monaco-editor.\n\t */\n\tglyphMargin?: boolean;\n\t/**\n\t * The width reserved for line decorations (in px).\n\t * Line decorations are placed between line numbers and the editor content.\n\t * You can pass in a string in the format floating point followed by \"ch\". e.g. 1.3ch.\n\t * Defaults to 10.\n\t */\n\tlineDecorationsWidth?: number | string;\n\t/**\n\t * When revealing the cursor, a virtual padding (px) is added to the cursor, turning it into a rectangle.\n\t * This virtual padding ensures that the cursor gets revealed before hitting the edge of the viewport.\n\t * Defaults to 30 (px).\n\t */\n\trevealHorizontalRightPadding?: number;\n\t/**\n\t * Render the editor selection with rounded borders.\n\t * Defaults to true.\n\t */\n\troundedSelection?: boolean;\n\t/**\n\t * Class name to be added to the editor.\n\t */\n\textraEditorClassName?: string;\n\t/**\n\t * Should the editor be read only. See also `domReadOnly`.\n\t * Defaults to false.\n\t */\n\treadOnly?: boolean;\n\t/**\n\t * The message to display when the editor is readonly.\n\t */\n\treadOnlyMessage?: IMarkdownString;\n\t/**\n\t * Should the textarea used for input use the DOM `readonly` attribute.\n\t * Defaults to false.\n\t */\n\tdomReadOnly?: boolean;\n\t/**\n\t * Enable linked editing.\n\t * Defaults to false.\n\t */\n\tlinkedEditing?: boolean;\n\t/**\n\t * deprecated, use linkedEditing instead\n\t */\n\trenameOnType?: boolean;\n\t/**\n\t * Should the editor render validation decorations.\n\t * Defaults to editable.\n\t */\n\trenderValidationDecorations?: 'editable' | 'on' | 'off';\n\t/**\n\t * Control the behavior and rendering of the scrollbars.\n\t */\n\tscrollbar?: IEditorScrollbarOptions;\n\t/**\n\t * Control the behavior of sticky scroll options\n\t */\n\tstickyScroll?: IEditorStickyScrollOptions;\n\t/**\n\t * Control the behavior and rendering of the minimap.\n\t */\n\tminimap?: IEditorMinimapOptions;\n\t/**\n\t * Control the behavior of the find widget.\n\t */\n\tfind?: IEditorFindOptions;\n\t/**\n\t * Display overflow widgets as `fixed`.\n\t * Defaults to `false`.\n\t */\n\tfixedOverflowWidgets?: boolean;\n\t/**\n\t * Allow content widgets and overflow widgets to overflow the editor viewport.\n\t * Defaults to `true`.\n\t */\n\tallowOverflow?: boolean;\n\t/**\n\t * The number of vertical lanes the overview ruler should render.\n\t * Defaults to 3.\n\t */\n\toverviewRulerLanes?: number;\n\t/**\n\t * Controls if a border should be drawn around the overview ruler.\n\t * Defaults to `true`.\n\t */\n\toverviewRulerBorder?: boolean;\n\t/**\n\t * Control the cursor animation style, possible values are 'blink', 'smooth', 'phase', 'expand' and 'solid'.\n\t * Defaults to 'blink'.\n\t */\n\tcursorBlinking?: 'blink' | 'smooth' | 'phase' | 'expand' | 'solid';\n\t/**\n\t * Zoom the font in the editor when using the mouse wheel in combination with holding Ctrl.\n\t * Defaults to false.\n\t */\n\tmouseWheelZoom?: boolean;\n\t/**\n\t * Control the mouse pointer style, either 'text' or 'default' or 'copy'\n\t * Defaults to 'text'\n\t */\n\tmouseStyle?: 'text' | 'default' | 'copy';\n\t/**\n\t * Enable smooth caret animation.\n\t * Defaults to 'off'.\n\t */\n\tcursorSmoothCaretAnimation?: 'off' | 'explicit' | 'on';\n\t/**\n\t * Control the cursor style in insert mode.\n\t * Defaults to 'line'.\n\t */\n\tcursorStyle?: 'line' | 'block' | 'underline' | 'line-thin' | 'block-outline' | 'underline-thin';\n\t/**\n\t * Control the cursor style in overtype mode.\n\t * Defaults to 'block'.\n\t */\n\tovertypeCursorStyle?: 'line' | 'block' | 'underline' | 'line-thin' | 'block-outline' | 'underline-thin';\n\t/**\n\t * Controls whether paste in overtype mode should overwrite or insert.\n\t */\n\tovertypeOnPaste?: boolean;\n\t/**\n\t * Control the width of the cursor when cursorStyle is set to 'line'\n\t */\n\tcursorWidth?: number;\n\t/**\n\t * Control the height of the cursor when cursorStyle is set to 'line'\n\t */\n\tcursorHeight?: number;\n\t/**\n\t * Enable font ligatures.\n\t * Defaults to false.\n\t */\n\tfontLigatures?: boolean | string;\n\t/**\n\t * Enable font variations.\n\t * Defaults to false.\n\t */\n\tfontVariations?: boolean | string;\n\t/**\n\t * Controls whether to use default color decorations or not using the default document color provider\n\t */\n\tdefaultColorDecorators?: 'auto' | 'always' | 'never';\n\t/**\n\t * Disable the use of `transform: translate3d(0px, 0px, 0px)` for the editor margin and lines layers.\n\t * The usage of `transform: translate3d(0px, 0px, 0px)` acts as a hint for browsers to create an extra layer.\n\t * Defaults to false.\n\t */\n\tdisableLayerHinting?: boolean;\n\t/**\n\t * Disable the optimizations for monospace fonts.\n\t * Defaults to false.\n\t */\n\tdisableMonospaceOptimizations?: boolean;\n\t/**\n\t * Should the cursor be hidden in the overview ruler.\n\t * Defaults to false.\n\t */\n\thideCursorInOverviewRuler?: boolean;\n\t/**\n\t * Enable that scrolling can go one screen size after the last line.\n\t * Defaults to true.\n\t */\n\tscrollBeyondLastLine?: boolean;\n\t/**\n\t * Scroll editor on middle click\n\t */\n\tscrollOnMiddleClick?: boolean;\n\t/**\n\t * Enable that scrolling can go beyond the last column by a number of columns.\n\t * Defaults to 5.\n\t */\n\tscrollBeyondLastColumn?: number;\n\t/**\n\t * Enable that the editor animates scrolling to a position.\n\t * Defaults to false.\n\t */\n\tsmoothScrolling?: boolean;\n\t/**\n\t * Enable that the editor will install a ResizeObserver to check if its container dom node size has changed.\n\t * Defaults to false.\n\t */\n\tautomaticLayout?: boolean;\n\t/**\n\t * Control the wrapping of the editor.\n\t * When `wordWrap` = \"off\", the lines will never wrap.\n\t * When `wordWrap` = \"on\", the lines will wrap at the viewport width.\n\t * When `wordWrap` = \"wordWrapColumn\", the lines will wrap at `wordWrapColumn`.\n\t * When `wordWrap` = \"bounded\", the lines will wrap at min(viewport width, wordWrapColumn).\n\t * Defaults to \"off\".\n\t */\n\twordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded';\n\t/**\n\t * Override the `wordWrap` setting.\n\t */\n\twordWrapOverride1?: 'off' | 'on' | 'inherit';\n\t/**\n\t * Override the `wordWrapOverride1` setting.\n\t */\n\twordWrapOverride2?: 'off' | 'on' | 'inherit';\n\t/**\n\t * Control the wrapping of the editor.\n\t * When `wordWrap` = \"off\", the lines will never wrap.\n\t * When `wordWrap` = \"on\", the lines will wrap at the viewport width.\n\t * When `wordWrap` = \"wordWrapColumn\", the lines will wrap at `wordWrapColumn`.\n\t * When `wordWrap` = \"bounded\", the lines will wrap at min(viewport width, wordWrapColumn).\n\t * Defaults to 80.\n\t */\n\twordWrapColumn?: number;\n\t/**\n\t * Control indentation of wrapped lines. Can be: 'none', 'same', 'indent' or 'deepIndent'.\n\t * Defaults to 'same' in vscode and to 'none' in monaco-editor.\n\t */\n\twrappingIndent?: 'none' | 'same' | 'indent' | 'deepIndent';\n\t/**\n\t * Controls the wrapping strategy to use.\n\t * Defaults to 'simple'.\n\t */\n\twrappingStrategy?: 'simple' | 'advanced';\n\t/**\n\t * Create a softwrap on every quoted \"\\n\" literal.\n\t * Defaults to false.\n\t */\n\twrapOnEscapedLineFeeds?: boolean;\n\t/**\n\t * Configure word wrapping characters. A break will be introduced before these characters.\n\t */\n\twordWrapBreakBeforeCharacters?: string;\n\t/**\n\t * Configure word wrapping characters. A break will be introduced after these characters.\n\t */\n\twordWrapBreakAfterCharacters?: string;\n\t/**\n\t * Sets whether line breaks appear wherever the text would otherwise overflow its content box.\n\t * When wordBreak = 'normal', Use the default line break rule.\n\t * When wordBreak = 'keepAll', Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.\n\t */\n\twordBreak?: 'normal' | 'keepAll';\n\t/**\n\t * Performance guard: Stop rendering a line after x characters.\n\t * Defaults to 10000.\n\t * Use -1 to never stop rendering\n\t */\n\tstopRenderingLineAfter?: number;\n\t/**\n\t * Configure the editor's hover.\n\t */\n\thover?: IEditorHoverOptions;\n\t/**\n\t * Enable detecting links and making them clickable.\n\t * Defaults to true.\n\t */\n\tlinks?: boolean;\n\t/**\n\t * Enable inline color decorators and color picker rendering.\n\t */\n\tcolorDecorators?: boolean;\n\t/**\n\t * Controls what is the condition to spawn a color picker from a color dectorator\n\t */\n\tcolorDecoratorsActivatedOn?: 'clickAndHover' | 'click' | 'hover';\n\t/**\n\t * Controls the max number of color decorators that can be rendered in an editor at once.\n\t */\n\tcolorDecoratorsLimit?: number;\n\t/**\n\t * Control the behaviour of comments in the editor.\n\t */\n\tcomments?: IEditorCommentsOptions;\n\t/**\n\t * Enable custom contextmenu.\n\t * Defaults to true.\n\t */\n\tcontextmenu?: boolean;\n\t/**\n\t * A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\n\t * Defaults to 1.\n\t */\n\tmouseWheelScrollSensitivity?: number;\n\t/**\n\t * FastScrolling mulitplier speed when pressing `Alt`\n\t * Defaults to 5.\n\t */\n\tfastScrollSensitivity?: number;\n\t/**\n\t * Enable that the editor scrolls only the predominant axis. Prevents horizontal drift when scrolling vertically on a trackpad.\n\t * Defaults to true.\n\t */\n\tscrollPredominantAxis?: boolean;\n\t/**\n\t * Make scrolling inertial - mostly useful with touchpad on linux.\n\t */\n\tinertialScroll?: boolean;\n\t/**\n\t * Enable that the selection with the mouse and keys is doing column selection.\n\t * Defaults to false.\n\t */\n\tcolumnSelection?: boolean;\n\t/**\n\t * The modifier to be used to add multiple cursors with the mouse.\n\t * Defaults to 'alt'\n\t */\n\tmultiCursorModifier?: 'ctrlCmd' | 'alt';\n\t/**\n\t * Merge overlapping selections.\n\t * Defaults to true\n\t */\n\tmultiCursorMergeOverlapping?: boolean;\n\t/**\n\t * Configure the behaviour when pasting a text with the line count equal to the cursor count.\n\t * Defaults to 'spread'.\n\t */\n\tmultiCursorPaste?: 'spread' | 'full';\n\t/**\n\t * Controls the max number of text cursors that can be in an active editor at once.\n\t */\n\tmultiCursorLimit?: number;\n\t/**\n\t * Enables middle mouse button to open links and Go To Definition\n\t */\n\tmouseMiddleClickAction?: MouseMiddleClickAction;\n\t/**\n\t * Configure the editor's accessibility support.\n\t * Defaults to 'auto'. It is best to leave this to 'auto'.\n\t */\n\taccessibilitySupport?: 'auto' | 'off' | 'on';\n\t/**\n\t * Controls the number of lines in the editor that can be read out by a screen reader\n\t */\n\taccessibilityPageSize?: number;\n\t/**\n\t * Suggest options.\n\t */\n\tsuggest?: ISuggestOptions;\n\tinlineSuggest?: IInlineSuggestOptions;\n\t/**\n\t * Smart select options.\n\t */\n\tsmartSelect?: ISmartSelectOptions;\n\t/**\n\t *\n\t */\n\tgotoLocation?: IGotoLocationOptions;\n\t/**\n\t * Enable quick suggestions (shadow suggestions)\n\t * Defaults to true.\n\t */\n\tquickSuggestions?: boolean | IQuickSuggestionsOptions;\n\t/**\n\t * Quick suggestions show delay (in ms)\n\t * Defaults to 10 (ms)\n\t */\n\tquickSuggestionsDelay?: number;\n\t/**\n\t * Controls the spacing around the editor.\n\t */\n\tpadding?: IEditorPaddingOptions;\n\t/**\n\t * Parameter hint options.\n\t */\n\tparameterHints?: IEditorParameterHintOptions;\n\t/**\n\t * Options for auto closing brackets.\n\t * Defaults to language defined behavior.\n\t */\n\tautoClosingBrackets?: EditorAutoClosingStrategy;\n\t/**\n\t * Options for auto closing comments.\n\t * Defaults to language defined behavior.\n\t */\n\tautoClosingComments?: EditorAutoClosingStrategy;\n\t/**\n\t * Options for auto closing quotes.\n\t * Defaults to language defined behavior.\n\t */\n\tautoClosingQuotes?: EditorAutoClosingStrategy;\n\t/**\n\t * Options for pressing backspace near quotes or bracket pairs.\n\t */\n\tautoClosingDelete?: EditorAutoClosingEditStrategy;\n\t/**\n\t * Options for typing over closing quotes or brackets.\n\t */\n\tautoClosingOvertype?: EditorAutoClosingEditStrategy;\n\t/**\n\t * Options for auto surrounding.\n\t * Defaults to always allowing auto surrounding.\n\t */\n\tautoSurround?: EditorAutoSurroundStrategy;\n\t/**\n\t * Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.\n\t * Defaults to advanced.\n\t */\n\tautoIndent?: 'none' | 'keep' | 'brackets' | 'advanced' | 'full';\n\t/**\n\t * Boolean which controls whether to autoindent on paste\n\t */\n\tautoIndentOnPaste?: boolean;\n\t/**\n\t * Boolean which controls whether to autoindent on paste within a string when autoIndentOnPaste is enabled.\n\t */\n\tautoIndentOnPasteWithinString?: boolean;\n\t/**\n\t * Emulate selection behaviour of tab characters when using spaces for indentation.\n\t * This means selection will stick to tab stops.\n\t */\n\tstickyTabStops?: boolean;\n\t/**\n\t * Enable format on type.\n\t * Defaults to false.\n\t */\n\tformatOnType?: boolean;\n\t/**\n\t * Enable format on paste.\n\t * Defaults to false.\n\t */\n\tformatOnPaste?: boolean;\n\t/**\n\t * Controls if the editor should allow to move selections via drag and drop.\n\t * Defaults to false.\n\t */\n\tdragAndDrop?: boolean;\n\t/**\n\t * Enable the suggestion box to pop-up on trigger characters.\n\t * Defaults to true.\n\t */\n\tsuggestOnTriggerCharacters?: boolean;\n\t/**\n\t * Accept suggestions on ENTER.\n\t * Defaults to 'on'.\n\t */\n\tacceptSuggestionOnEnter?: 'on' | 'smart' | 'off';\n\t/**\n\t * Accept suggestions on provider defined characters.\n\t * Defaults to true.\n\t */\n\tacceptSuggestionOnCommitCharacter?: boolean;\n\t/**\n\t * Enable snippet suggestions. Default to 'true'.\n\t */\n\tsnippetSuggestions?: 'top' | 'bottom' | 'inline' | 'none';\n\t/**\n\t * Copying without a selection copies the current line.\n\t */\n\temptySelectionClipboard?: boolean;\n\t/**\n\t * Syntax highlighting is copied.\n\t */\n\tcopyWithSyntaxHighlighting?: boolean;\n\t/**\n\t * The history mode for suggestions.\n\t */\n\tsuggestSelection?: 'first' | 'recentlyUsed' | 'recentlyUsedByPrefix';\n\t/**\n\t * The font size for the suggest widget.\n\t * Defaults to the editor font size.\n\t */\n\tsuggestFontSize?: number;\n\t/**\n\t * The line height for the suggest widget.\n\t * Defaults to the editor line height.\n\t */\n\tsuggestLineHeight?: number;\n\t/**\n\t * Enable tab completion.\n\t */\n\ttabCompletion?: 'on' | 'off' | 'onlySnippets';\n\t/**\n\t * Enable selection highlight.\n\t * Defaults to true.\n\t */\n\tselectionHighlight?: boolean;\n\t/**\n\t * Enable selection highlight for multiline selections.\n\t * Defaults to false.\n\t */\n\tselectionHighlightMultiline?: boolean;\n\t/**\n\t * Maximum length (in characters) for selection highlights.\n\t * Set to 0 to have an unlimited length.\n\t */\n\tselectionHighlightMaxLength?: number;\n\t/**\n\t * Enable semantic occurrences highlight.\n\t * Defaults to 'singleFile'.\n\t * 'off' disables occurrence highlighting\n\t * 'singleFile' triggers occurrence highlighting in the current document\n\t * 'multiFile' triggers occurrence highlighting across valid open documents\n\t */\n\toccurrencesHighlight?: 'off' | 'singleFile' | 'multiFile';\n\t/**\n\t * Controls delay for occurrences highlighting\n\t * Defaults to 250.\n\t * Minimum value is 0\n\t * Maximum value is 2000\n\t */\n\toccurrencesHighlightDelay?: number;\n\t/**\n\t * Show code lens\n\t * Defaults to true.\n\t */\n\tcodeLens?: boolean;\n\t/**\n\t * Code lens font family. Defaults to editor font family.\n\t */\n\tcodeLensFontFamily?: string;\n\t/**\n\t * Code lens font size. Default to 90% of the editor font size\n\t */\n\tcodeLensFontSize?: number;\n\t/**\n\t * Control the behavior and rendering of the code action lightbulb.\n\t */\n\tlightbulb?: IEditorLightbulbOptions;\n\t/**\n\t * Timeout for running code actions on save.\n\t */\n\tcodeActionsOnSaveTimeout?: number;\n\t/**\n\t * Enable code folding.\n\t * Defaults to true.\n\t */\n\tfolding?: boolean;\n\t/**\n\t * Selects the folding strategy. 'auto' uses the strategies contributed for the current document, 'indentation' uses the indentation based folding strategy.\n\t * Defaults to 'auto'.\n\t */\n\tfoldingStrategy?: 'auto' | 'indentation';\n\t/**\n\t * Enable highlight for folded regions.\n\t * Defaults to true.\n\t */\n\tfoldingHighlight?: boolean;\n\t/**\n\t * Auto fold imports folding regions.\n\t * Defaults to true.\n\t */\n\tfoldingImportsByDefault?: boolean;\n\t/**\n\t * Maximum number of foldable regions.\n\t * Defaults to 5000.\n\t */\n\tfoldingMaximumRegions?: number;\n\t/**\n\t * Controls whether the fold actions in the gutter stay always visible or hide unless the mouse is over the gutter.\n\t * Defaults to 'mouseover'.\n\t */\n\tshowFoldingControls?: 'always' | 'never' | 'mouseover';\n\t/**\n\t * Controls whether clicking on the empty content after a folded line will unfold the line.\n\t * Defaults to false.\n\t */\n\tunfoldOnClickAfterEndOfLine?: boolean;\n\t/**\n\t * Enable highlighting of matching brackets.\n\t * Defaults to 'always'.\n\t */\n\tmatchBrackets?: 'never' | 'near' | 'always';\n\t/**\n\t * Enable experimental rendering using WebGPU.\n\t * Defaults to 'off'.\n\t */\n\texperimentalGpuAcceleration?: 'on' | 'off';\n\t/**\n\t * Enable experimental whitespace rendering.\n\t * Defaults to 'svg'.\n\t */\n\texperimentalWhitespaceRendering?: 'svg' | 'font' | 'off';\n\t/**\n\t * Enable rendering of whitespace.\n\t * Defaults to 'selection'.\n\t */\n\trenderWhitespace?: 'none' | 'boundary' | 'selection' | 'trailing' | 'all';\n\t/**\n\t * Enable rendering of control characters.\n\t * Defaults to true.\n\t */\n\trenderControlCharacters?: boolean;\n\t/**\n\t * Enable rendering of current line highlight.\n\t * Defaults to all.\n\t */\n\trenderLineHighlight?: 'none' | 'gutter' | 'line' | 'all';\n\t/**\n\t * Control if the current line highlight should be rendered only the editor is focused.\n\t * Defaults to false.\n\t */\n\trenderLineHighlightOnlyWhenFocus?: boolean;\n\t/**\n\t * Inserting and deleting whitespace follows tab stops.\n\t */\n\tuseTabStops?: boolean;\n\t/**\n\t * Controls whether the editor should automatically remove indentation whitespace when joining lines with Delete.\n\t * Defaults to false.\n\t */\n\ttrimWhitespaceOnDelete?: boolean;\n\t/**\n\t * The font family\n\t */\n\tfontFamily?: string;\n\t/**\n\t * The font weight\n\t */\n\tfontWeight?: string;\n\t/**\n\t * The font size\n\t */\n\tfontSize?: number;\n\t/**\n\t * The line height\n\t */\n\tlineHeight?: number;\n\t/**\n\t * The letter spacing\n\t */\n\tletterSpacing?: number;\n\t/**\n\t * Controls fading out of unused variables.\n\t */\n\tshowUnused?: boolean;\n\t/**\n\t * Controls whether to focus the inline editor in the peek widget by default.\n\t * Defaults to false.\n\t */\n\tpeekWidgetDefaultFocus?: 'tree' | 'editor';\n\n\t/**\n\t * Sets a placeholder for the editor.\n\t * If set, the placeholder is shown if the editor is empty.\n\t*/\n\tplaceholder?: string | undefined;\n\n\t/**\n\t * Controls whether the definition link opens element in the peek widget.\n\t * Defaults to false.\n\t */\n\tdefinitionLinkOpensInPeek?: boolean;\n\t/**\n\t * Controls strikethrough deprecated variables.\n\t */\n\tshowDeprecated?: boolean;\n\t/**\n\t * Controls whether suggestions allow matches in the middle of the word instead of only at the beginning\n\t */\n\tmatchOnWordStartOnly?: boolean;\n\t/**\n\t * Control the behavior and rendering of the inline hints.\n\t */\n\tinlayHints?: IEditorInlayHintsOptions;\n\t/**\n\t * Control if the editor should use shadow DOM.\n\t */\n\tuseShadowDOM?: boolean;\n\t/**\n\t * Controls the behavior of editor guides.\n\t*/\n\tguides?: IGuidesOptions;\n\n\t/**\n\t * Controls the behavior of the unicode highlight feature\n\t * (by default, ambiguous and invisible characters are highlighted).\n\t */\n\tunicodeHighlight?: IUnicodeHighlightOptions;\n\n\t/**\n\t * Configures bracket pair colorization (disabled by default).\n\t*/\n\tbracketPairColorization?: IBracketPairColorizationOptions;\n\n\t/**\n\t * Controls dropping into the editor from an external source.\n\t *\n\t * When enabled, this shows a preview of the drop location and triggers an `onDropIntoEditor` event.\n\t */\n\tdropIntoEditor?: IDropIntoEditorOptions;\n\n\t/**\n\t * Sets whether the new experimental edit context should be used instead of the text area.\n\t */\n\teditContext?: boolean;\n\n\t/**\n\t * Controls whether to render rich HTML screen reader content when the EditContext is enabled\n\t */\n\trenderRichScreenReaderContent?: boolean;\n\n\t/**\n\t * Controls support for changing how content is pasted into the editor.\n\t */\n\tpasteAs?: IPasteAsOptions;\n\n\t/**\n\t * Controls whether the editor / terminal receives tabs or defers them to the workbench for navigation.\n\t */\n\ttabFocusMode?: boolean;\n\n\t/**\n\t * Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\n\t */\n\tinlineCompletionsAccessibilityVerbose?: boolean;\n}\n\n/**\n * @internal\n * The width of the minimap gutter, in pixels.\n */\nexport const MINIMAP_GUTTER_WIDTH = 8;\n\nexport interface IDiffEditorBaseOptions {\n\t/**\n\t * Allow the user to resize the diff editor split view.\n\t * Defaults to true.\n\t */\n\tenableSplitViewResizing?: boolean;\n\n\t/**\n\t * The default ratio when rendering side-by-side editors.\n\t * Must be a number between 0 and 1, min sizes apply.\n\t * Defaults to 0.5\n\t */\n\tsplitViewDefaultRatio?: number;\n\n\t/**\n\t * Render the differences in two side-by-side editors.\n\t * Defaults to true.\n\t */\n\trenderSideBySide?: boolean;\n\n\t/**\n\t * When `renderSideBySide` is enabled, `useInlineViewWhenSpaceIsLimited` is set,\n\t * and the diff editor has a width less than `renderSideBySideInlineBreakpoint`, the inline view is used.\n\t */\n\trenderSideBySideInlineBreakpoint?: number | undefined;\n\n\t/**\n\t * When `renderSideBySide` is enabled, `useInlineViewWhenSpaceIsLimited` is set,\n\t * and the diff editor has a width less than `renderSideBySideInlineBreakpoint`, the inline view is used.\n\t */\n\tuseInlineViewWhenSpaceIsLimited?: boolean;\n\n\t/**\n\t * If set, the diff editor is optimized for small views.\n\t * Defaults to `false`.\n\t*/\n\tcompactMode?: boolean;\n\n\t/**\n\t * Timeout in milliseconds after which diff computation is cancelled.\n\t * Defaults to 5000.\n\t */\n\tmaxComputationTime?: number;\n\n\t/**\n\t * Maximum supported file size in MB.\n\t * Defaults to 50.\n\t */\n\tmaxFileSize?: number;\n\n\t/**\n\t * Compute the diff by ignoring leading/trailing whitespace\n\t * Defaults to true.\n\t */\n\tignoreTrimWhitespace?: boolean;\n\n\t/**\n\t * Render +/- indicators for added/deleted changes.\n\t * Defaults to true.\n\t */\n\trenderIndicators?: boolean;\n\n\t/**\n\t * Shows icons in the glyph margin to revert changes.\n\t * Default to true.\n\t */\n\trenderMarginRevertIcon?: boolean;\n\n\t/**\n\t * Indicates if the gutter menu should be rendered.\n\t*/\n\trenderGutterMenu?: boolean;\n\n\t/**\n\t * Original model should be editable?\n\t * Defaults to false.\n\t */\n\toriginalEditable?: boolean;\n\n\t/**\n\t * Should the diff editor enable code lens?\n\t * Defaults to false.\n\t */\n\tdiffCodeLens?: boolean;\n\n\t/**\n\t * Is the diff editor should render overview ruler\n\t * Defaults to true\n\t */\n\trenderOverviewRuler?: boolean;\n\n\t/**\n\t * Control the wrapping of the diff editor.\n\t */\n\tdiffWordWrap?: 'off' | 'on' | 'inherit';\n\n\t/**\n\t * Diff Algorithm\n\t*/\n\tdiffAlgorithm?: 'legacy' | 'advanced';\n\n\t/**\n\t * Whether the diff editor aria label should be verbose.\n\t */\n\taccessibilityVerbose?: boolean;\n\n\texperimental?: {\n\t\t/**\n\t\t * Defaults to false.\n\t\t */\n\t\tshowMoves?: boolean;\n\n\t\tshowEmptyDecorations?: boolean;\n\n\t\t/**\n\t\t * Only applies when `renderSideBySide` is set to false.\n\t\t*/\n\t\tuseTrueInlineView?: boolean;\n\t};\n\n\t/**\n\t * Is the diff editor inside another editor\n\t * Defaults to false\n\t */\n\tisInEmbeddedEditor?: boolean;\n\n\t/**\n\t * If the diff editor should only show the difference review mode.\n\t */\n\tonlyShowAccessibleDiffViewer?: boolean;\n\n\thideUnchangedRegions?: {\n\t\tenabled?: boolean;\n\t\trevealLineCount?: number;\n\t\tminimumLineCount?: number;\n\t\tcontextLineCount?: number;\n\t};\n}\n\n/**\n * Configuration options for the diff editor.\n */\nexport interface IDiffEditorOptions extends IEditorOptions, IDiffEditorBaseOptions {\n}\n\n/**\n * @internal\n */\nexport type ValidDiffEditorBaseOptions = Readonly<Required<IDiffEditorBaseOptions>>;\n\n//#endregion\n\n/**\n * An event describing that the configuration of the editor has changed.\n */\nexport class ConfigurationChangedEvent {\n\tprivate readonly _values: boolean[];\n\t/**\n\t * @internal\n\t */\n\tconstructor(values: boolean[]) {\n\t\tthis._values = values;\n\t}\n\tpublic hasChanged(id: EditorOption): boolean {\n\t\treturn this._values[id];\n\t}\n}\n\n/**\n * All computed editor options.\n */\nexport interface IComputedEditorOptions {\n\tget<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;\n}\n\n//#region IEditorOption\n\n/**\n * @internal\n */\nexport interface IEnvironmentalOptions {\n\treadonly memory: ComputeOptionsMemory | null;\n\treadonly outerWidth: number;\n\treadonly outerHeight: number;\n\treadonly fontInfo: FontInfo;\n\treadonly extraEditorClassName: string;\n\treadonly isDominatedByLongLines: boolean;\n\treadonly viewLineCount: number;\n\treadonly lineNumbersDigitCount: number;\n\treadonly emptySelectionClipboard: boolean;\n\treadonly pixelRatio: number;\n\treadonly tabFocusMode: boolean;\n\treadonly inputMode: 'insert' | 'overtype';\n\treadonly accessibilitySupport: AccessibilitySupport;\n\treadonly glyphMarginDecorationLaneCount: number;\n\treadonly editContextSupported: boolean;\n}\n\n/**\n * @internal\n */\nexport class ComputeOptionsMemory {\n\n\tpublic stableMinimapLayoutInput: IMinimapLayoutInput | null;\n\tpublic stableFitMaxMinimapScale: number;\n\tpublic stableFitRemainingWidth: number;\n\n\tconstructor() {\n\t\tthis.stableMinimapLayoutInput = null;\n\t\tthis.stableFitMaxMinimapScale = 0;\n\t\tthis.stableFitRemainingWidth = 0;\n\t}\n}\n\nexport interface IEditorOption<K extends EditorOption, V> {\n\treadonly id: K;\n\treadonly name: string;\n\tdefaultValue: V;\n\t/**\n\t * @internal\n\t */\n\treadonly schema: IConfigurationPropertySchema | { [path: string]: IConfigurationPropertySchema } | undefined;\n\t/**\n\t * @internal\n\t */\n\tvalidate(input: unknown): V;\n\t/**\n\t * @internal\n\t */\n\tcompute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: V): V;\n\n\t/**\n\t * Might modify `value`.\n\t*/\n\tapplyUpdate(value: V | undefined, update: V): ApplyUpdateResult<V>;\n}\n\n/**\n * @internal\n */\ntype PossibleKeyName0<V> = { [K in keyof IEditorOptions]: IEditorOptions[K] extends V | undefined ? K : never }[keyof IEditorOptions];\n/**\n * @internal\n */\ntype PossibleKeyName<V> = NonNullable<PossibleKeyName0<V>>;\n\n/**\n * @internal\n */\nabstract class BaseEditorOption<K extends EditorOption, T, V> implements IEditorOption<K, V> {\n\n\tpublic readonly id: K;\n\tpublic readonly name: string;\n\tpublic readonly defaultValue: V;\n\tpublic readonly schema: IConfigurationPropertySchema | { [path: string]: IConfigurationPropertySchema } | undefined;\n\n\tconstructor(id: K, name: PossibleKeyName<T>, defaultValue: V, schema?: IConfigurationPropertySchema | { [path: string]: IConfigurationPropertySchema }) {\n\t\tthis.id = id;\n\t\tthis.name = name;\n\t\tthis.defaultValue = defaultValue;\n\t\tthis.schema = schema;\n\t}\n\n\tpublic applyUpdate(value: V | undefined, update: V): ApplyUpdateResult<V> {\n\t\treturn applyUpdate(value, update);\n\t}\n\n\tpublic abstract validate(input: unknown): V;\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: V): V {\n\t\treturn value;\n\t}\n}\n\nexport class ApplyUpdateResult<T> {\n\tconstructor(\n\t\tpublic readonly newValue: T,\n\t\tpublic readonly didChange: boolean\n\t) { }\n}\n\nfunction applyUpdate<T>(value: T | undefined, update: T): ApplyUpdateResult<T> {\n\tif (typeof value !== 'object' || typeof update !== 'object' || !value || !update) {\n\t\treturn new ApplyUpdateResult(update, value !== update);\n\t}\n\tif (Array.isArray(value) || Array.isArray(update)) {\n\t\tconst arrayEquals = Array.isArray(value) && Array.isArray(update) && arrays.equals(value, update);\n\t\treturn new ApplyUpdateResult(update, !arrayEquals);\n\t}\n\tlet didChange = false;\n\tfor (const key in update) {\n\t\tif (update.hasOwnProperty(key)) {\n\t\t\tconst result = applyUpdate(value[key], update[key]);\n\t\t\tif (result.didChange) {\n\t\t\t\tvalue[key] = result.newValue;\n\t\t\t\tdidChange = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn new ApplyUpdateResult(value, didChange);\n}\n\n/**\n * @internal\n */\nabstract class ComputedEditorOption<K extends EditorOption, V> implements IEditorOption<K, V> {\n\n\tpublic readonly id: K;\n\tpublic readonly name: '_never_';\n\tpublic readonly defaultValue: V;\n\tpublic readonly schema: IConfigurationPropertySchema | undefined = undefined;\n\n\tconstructor(id: K, defaultValue: V) {\n\t\tthis.id = id;\n\t\tthis.name = '_never_';\n\t\tthis.defaultValue = defaultValue;\n\t}\n\n\tpublic applyUpdate(value: V | undefined, update: V): ApplyUpdateResult<V> {\n\t\treturn applyUpdate(value, update);\n\t}\n\n\tpublic validate(input: unknown): V {\n\t\treturn this.defaultValue;\n\t}\n\n\tpublic abstract compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: V): V;\n}\n\nabstract class SimpleEditorOption<K extends EditorOption, V> implements IEditorOption<K, V> {\n\n\tpublic readonly id: K;\n\tpublic readonly name: PossibleKeyName<V>;\n\tpublic readonly defaultValue: V;\n\tpublic readonly schema: IConfigurationPropertySchema | undefined;\n\n\tconstructor(id: K, name: PossibleKeyName<V>, defaultValue: V, schema?: IConfigurationPropertySchema) {\n\t\tthis.id = id;\n\t\tthis.name = name;\n\t\tthis.defaultValue = defaultValue;\n\t\tthis.schema = schema;\n\t}\n\n\tpublic applyUpdate(value: V | undefined, update: V): ApplyUpdateResult<V> {\n\t\treturn applyUpdate(value, update);\n\t}\n\n\tpublic abstract validate(input: unknown): V;\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: V): V {\n\t\treturn value;\n\t}\n}\n\n/**\n * @internal\n */\nexport function boolean(value: unknown, defaultValue: boolean): boolean {\n\tif (typeof value === 'undefined') {\n\t\treturn defaultValue;\n\t}\n\tif (value === 'false') {\n\t\t// treat the string 'false' as false\n\t\treturn false;\n\t}\n\treturn Boolean(value);\n}\n\nclass EditorBooleanOption<K extends EditorOption> extends SimpleEditorOption<K, boolean> {\n\n\tconstructor(id: K, name: PossibleKeyName<boolean>, defaultValue: boolean, schema: IConfigurationPropertySchema | undefined = undefined) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'boolean';\n\t\t\tschema.default = defaultValue;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t}\n\n\tpublic override validate(input: unknown): boolean {\n\t\treturn boolean(input, this.defaultValue);\n\t}\n}\n\n/**\n * @internal\n */\nexport function clampedInt<T = number>(value: unknown, defaultValue: T, minimum: number, maximum: number): number | T {\n\tif (typeof value === 'string') {\n\t\tvalue = parseInt(value, 10);\n\t}\n\tif (typeof value !== 'number' || isNaN(value)) {\n\t\treturn defaultValue;\n\t}\n\tlet r = value;\n\tr = Math.max(minimum, r);\n\tr = Math.min(maximum, r);\n\treturn r | 0;\n}\n\nclass EditorIntOption<K extends EditorOption> extends SimpleEditorOption<K, number> {\n\n\tpublic static clampedInt<T>(value: unknown, defaultValue: T, minimum: number, maximum: number): number | T {\n\t\treturn clampedInt(value, defaultValue, minimum, maximum);\n\t}\n\n\tpublic readonly minimum: number;\n\tpublic readonly maximum: number;\n\n\tconstructor(id: K, name: PossibleKeyName<number>, defaultValue: number, minimum: number, maximum: number, schema: IConfigurationPropertySchema | undefined = undefined) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'integer';\n\t\t\tschema.default = defaultValue;\n\t\t\tschema.minimum = minimum;\n\t\t\tschema.maximum = maximum;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t\tthis.minimum = minimum;\n\t\tthis.maximum = maximum;\n\t}\n\n\tpublic override validate(input: unknown): number {\n\t\treturn EditorIntOption.clampedInt(input, this.defaultValue, this.minimum, this.maximum);\n\t}\n}\n/**\n * @internal\n */\nexport function clampedFloat<T extends number>(value: unknown, defaultValue: T, minimum: number, maximum: number): number | T {\n\tif (typeof value === 'undefined') {\n\t\treturn defaultValue;\n\t}\n\tconst r = EditorFloatOption.float(value, defaultValue);\n\treturn EditorFloatOption.clamp(r, minimum, maximum);\n}\n\nclass EditorFloatOption<K extends EditorOption> extends SimpleEditorOption<K, number> {\n\n\tpublic readonly minimum: number | undefined;\n\tpublic readonly maximum: number | undefined;\n\n\tpublic static clamp(n: number, min: number, max: number): number {\n\t\tif (n < min) {\n\t\t\treturn min;\n\t\t}\n\t\tif (n > max) {\n\t\t\treturn max;\n\t\t}\n\t\treturn n;\n\t}\n\n\tpublic static float(value: unknown, defaultValue: number): number {\n\t\tif (typeof value === 'string') {\n\t\t\tvalue = parseFloat(value);\n\t\t}\n\t\tif (typeof value !== 'number' || isNaN(value)) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn value;\n\t}\n\n\tpublic readonly validationFn: (value: number) => number;\n\n\tconstructor(id: K, name: PossibleKeyName<number>, defaultValue: number, validationFn: (value: number) => number, schema?: IConfigurationPropertySchema, minimum?: number, maximum?: number) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'number';\n\t\t\tschema.default = defaultValue;\n\t\t\tschema.minimum = minimum;\n\t\t\tschema.maximum = maximum;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t\tthis.validationFn = validationFn;\n\t\tthis.minimum = minimum;\n\t\tthis.maximum = maximum;\n\t}\n\n\tpublic override validate(input: unknown): number {\n\t\treturn this.validationFn(EditorFloatOption.float(input, this.defaultValue));\n\t}\n}\n\nclass EditorStringOption<K extends EditorOption> extends SimpleEditorOption<K, string> {\n\n\tpublic static string(value: unknown, defaultValue: string): string {\n\t\tif (typeof value !== 'string') {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn value;\n\t}\n\n\tconstructor(id: K, name: PossibleKeyName<string>, defaultValue: string, schema: IConfigurationPropertySchema | undefined = undefined) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'string';\n\t\t\tschema.default = defaultValue;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t}\n\n\tpublic override validate(input: unknown): string {\n\t\treturn EditorStringOption.string(input, this.defaultValue);\n\t}\n}\n\n/**\n * @internal\n */\nexport function stringSet<T extends string>(value: unknown, defaultValue: T, allowedValues: ReadonlyArray<T>, renamedValues?: Record<string, T>): T {\n\tif (typeof value !== 'string') {\n\t\treturn defaultValue;\n\t}\n\tif (renamedValues && value in renamedValues) {\n\t\treturn renamedValues[value];\n\t}\n\tif (allowedValues.indexOf(value as T) === -1) {\n\t\treturn defaultValue;\n\t}\n\treturn value as T;\n}\n\nclass EditorStringEnumOption<K extends EditorOption, V extends string> extends SimpleEditorOption<K, V> {\n\n\tprivate readonly _allowedValues: ReadonlyArray<V>;\n\n\tconstructor(id: K, name: PossibleKeyName<V>, defaultValue: V, allowedValues: ReadonlyArray<V>, schema: IConfigurationPropertySchema | undefined = undefined) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'string';\n\t\t\tschema.enum = allowedValues.slice(0);\n\t\t\tschema.default = defaultValue;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t\tthis._allowedValues = allowedValues;\n\t}\n\n\tpublic override validate(input: unknown): V {\n\t\treturn stringSet<V>(input, this.defaultValue, this._allowedValues);\n\t}\n}\n\nclass EditorEnumOption<K extends EditorOption, T extends string, V> extends BaseEditorOption<K, T, V> {\n\n\tprivate readonly _allowedValues: T[];\n\tprivate readonly _convert: (value: T) => V;\n\n\tconstructor(id: K, name: PossibleKeyName<T>, defaultValue: V, defaultStringValue: string, allowedValues: T[], convert: (value: T) => V, schema: IConfigurationPropertySchema | undefined = undefined) {\n\t\tif (typeof schema !== 'undefined') {\n\t\t\tschema.type = 'string';\n\t\t\tschema.enum = allowedValues;\n\t\t\tschema.default = defaultStringValue;\n\t\t}\n\t\tsuper(id, name, defaultValue, schema);\n\t\tthis._allowedValues = allowedValues;\n\t\tthis._convert = convert;\n\t}\n\n\tpublic validate(input: unknown): V {\n\t\tif (typeof input !== 'string') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tif (this._allowedValues.indexOf(<T>input) === -1) {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\treturn this._convert(<T>input);\n\t}\n}\n\n//#endregion\n\n//#region autoIndent\n\nfunction _autoIndentFromString(autoIndent: 'none' | 'keep' | 'brackets' | 'advanced' | 'full'): EditorAutoIndentStrategy {\n\tswitch (autoIndent) {\n\t\tcase 'none': return EditorAutoIndentStrategy.None;\n\t\tcase 'keep': return EditorAutoIndentStrategy.Keep;\n\t\tcase 'brackets': return EditorAutoIndentStrategy.Brackets;\n\t\tcase 'advanced': return EditorAutoIndentStrategy.Advanced;\n\t\tcase 'full': return EditorAutoIndentStrategy.Full;\n\t}\n}\n\n//#endregion\n\n//#region accessibilitySupport\n\nclass EditorAccessibilitySupport extends BaseEditorOption<EditorOption.accessibilitySupport, 'auto' | 'off' | 'on', AccessibilitySupport> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.accessibilitySupport, 'accessibilitySupport', AccessibilitySupport.Unknown,\n\t\t\t{\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['auto', 'on', 'off'],\n\t\t\t\tenumDescriptions: [\n\t\t\t\t\tnls.localize('accessibilitySupport.auto', \"Use platform APIs to detect when a Screen Reader is attached.\"),\n\t\t\t\t\tnls.localize('accessibilitySupport.on', \"Optimize for usage with a Screen Reader.\"),\n\t\t\t\t\tnls.localize('accessibilitySupport.off', \"Assume a screen reader is not attached.\"),\n\t\t\t\t],\n\t\t\t\tdefault: 'auto',\n\t\t\t\ttags: ['accessibility'],\n\t\t\t\tdescription: nls.localize('accessibilitySupport', \"Controls if the UI should run in a mode where it is optimized for screen readers.\")\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): AccessibilitySupport {\n\t\tswitch (input) {\n\t\t\tcase 'auto': return AccessibilitySupport.Unknown;\n\t\t\tcase 'off': return AccessibilitySupport.Disabled;\n\t\t\tcase 'on': return AccessibilitySupport.Enabled;\n\t\t}\n\t\treturn this.defaultValue;\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: AccessibilitySupport): AccessibilitySupport {\n\t\tif (value === AccessibilitySupport.Unknown) {\n\t\t\t// The editor reads the `accessibilitySupport` from the environment\n\t\t\treturn env.accessibilitySupport;\n\t\t}\n\t\treturn value;\n\t}\n}\n\n//#endregion\n\n//#region comments\n\n/**\n * Configuration options for editor comments\n */\nexport interface IEditorCommentsOptions {\n\t/**\n\t * Insert a space after the line comment token and inside the block comments tokens.\n\t * Defaults to true.\n\t */\n\tinsertSpace?: boolean;\n\t/**\n\t * Ignore empty lines when inserting line comments.\n\t * Defaults to true.\n\t */\n\tignoreEmptyLines?: boolean;\n}\n\n/**\n * @internal\n */\nexport type EditorCommentsOptions = Readonly<Required<IEditorCommentsOptions>>;\n\nclass EditorComments extends BaseEditorOption<EditorOption.comments, IEditorCommentsOptions, EditorCommentsOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorCommentsOptions = {\n\t\t\tinsertSpace: true,\n\t\t\tignoreEmptyLines: true,\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.comments, 'comments', defaults,\n\t\t\t{\n\t\t\t\t'editor.comments.insertSpace': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.insertSpace,\n\t\t\t\t\tdescription: nls.localize('comments.insertSpace', \"Controls whether a space character is inserted when commenting.\")\n\t\t\t\t},\n\t\t\t\t'editor.comments.ignoreEmptyLines': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.ignoreEmptyLines,\n\t\t\t\t\tdescription: nls.localize('comments.ignoreEmptyLines', 'Controls if empty lines should be ignored with toggle, add or remove actions for line comments.')\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorCommentsOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorCommentsOptions>;\n\t\treturn {\n\t\t\tinsertSpace: boolean(input.insertSpace, this.defaultValue.insertSpace),\n\t\t\tignoreEmptyLines: boolean(input.ignoreEmptyLines, this.defaultValue.ignoreEmptyLines),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region cursorBlinking\n\n/**\n * The kind of animation in which the editor's cursor should be rendered.\n */\nexport const enum TextEditorCursorBlinkingStyle {\n\t/**\n\t * Hidden\n\t */\n\tHidden = 0,\n\t/**\n\t * Blinking\n\t */\n\tBlink = 1,\n\t/**\n\t * Blinking with smooth fading\n\t */\n\tSmooth = 2,\n\t/**\n\t * Blinking with prolonged filled state and smooth fading\n\t */\n\tPhase = 3,\n\t/**\n\t * Expand collapse animation on the y axis\n\t */\n\tExpand = 4,\n\t/**\n\t * No-Blinking\n\t */\n\tSolid = 5\n}\n\n/**\n * @internal\n */\nexport function cursorBlinkingStyleFromString(cursorBlinkingStyle: 'blink' | 'smooth' | 'phase' | 'expand' | 'solid'): TextEditorCursorBlinkingStyle {\n\tswitch (cursorBlinkingStyle) {\n\t\tcase 'blink': return TextEditorCursorBlinkingStyle.Blink;\n\t\tcase 'smooth': return TextEditorCursorBlinkingStyle.Smooth;\n\t\tcase 'phase': return TextEditorCursorBlinkingStyle.Phase;\n\t\tcase 'expand': return TextEditorCursorBlinkingStyle.Expand;\n\t\tcase 'solid': return TextEditorCursorBlinkingStyle.Solid;\n\t}\n}\n\n//#endregion\n\n//#region cursorStyle\n\n/**\n * The style in which the editor's cursor should be rendered.\n */\nexport enum TextEditorCursorStyle {\n\t/**\n\t * As a vertical line (sitting between two characters).\n\t */\n\tLine = 1,\n\t/**\n\t * As a block (sitting on top of a character).\n\t */\n\tBlock = 2,\n\t/**\n\t * As a horizontal line (sitting under a character).\n\t */\n\tUnderline = 3,\n\t/**\n\t * As a thin vertical line (sitting between two characters).\n\t */\n\tLineThin = 4,\n\t/**\n\t * As an outlined block (sitting on top of a character).\n\t */\n\tBlockOutline = 5,\n\t/**\n\t * As a thin horizontal line (sitting under a character).\n\t */\n\tUnderlineThin = 6\n}\n\n/**\n * @internal\n */\nexport function cursorStyleFromString(cursorStyle: 'line' | 'block' | 'underline' | 'line-thin' | 'block-outline' | 'underline-thin'): TextEditorCursorStyle {\n\tswitch (cursorStyle) {\n\t\tcase 'line': return TextEditorCursorStyle.Line;\n\t\tcase 'block': return TextEditorCursorStyle.Block;\n\t\tcase 'underline': return TextEditorCursorStyle.Underline;\n\t\tcase 'line-thin': return TextEditorCursorStyle.LineThin;\n\t\tcase 'block-outline': return TextEditorCursorStyle.BlockOutline;\n\t\tcase 'underline-thin': return TextEditorCursorStyle.UnderlineThin;\n\t}\n}\n\n//#endregion\n\n//#region editorClassName\n\nclass EditorClassName extends ComputedEditorOption<EditorOption.editorClassName, string> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.editorClassName, '');\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: string): string {\n\t\tconst classNames = ['monaco-editor'];\n\t\tif (options.get(EditorOption.extraEditorClassName)) {\n\t\t\tclassNames.push(options.get(EditorOption.extraEditorClassName));\n\t\t}\n\t\tif (env.extraEditorClassName) {\n\t\t\tclassNames.push(env.extraEditorClassName);\n\t\t}\n\t\tif (options.get(EditorOption.mouseStyle) === 'default') {\n\t\t\tclassNames.push('mouse-default');\n\t\t} else if (options.get(EditorOption.mouseStyle) === 'copy') {\n\t\t\tclassNames.push('mouse-copy');\n\t\t}\n\n\t\tif (options.get(EditorOption.showUnused)) {\n\t\t\tclassNames.push('showUnused');\n\t\t}\n\n\t\tif (options.get(EditorOption.showDeprecated)) {\n\t\t\tclassNames.push('showDeprecated');\n\t\t}\n\n\t\treturn classNames.join(' ');\n\t}\n}\n\n//#endregion\n\n//#region emptySelectionClipboard\n\nclass EditorEmptySelectionClipboard extends EditorBooleanOption<EditorOption.emptySelectionClipboard> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.emptySelectionClipboard, 'emptySelectionClipboard', true,\n\t\t\t{ description: nls.localize('emptySelectionClipboard', \"Controls whether copying without a selection copies the current line.\") }\n\t\t);\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: boolean): boolean {\n\t\treturn value && env.emptySelectionClipboard;\n\t}\n}\n\n//#endregion\n\n//#region find\n\n/**\n * Configuration options for editor find widget\n */\nexport interface IEditorFindOptions {\n\t/**\n\t* Controls whether the cursor should move to find matches while typing.\n\t*/\n\tcursorMoveOnType?: boolean;\n\t/**\n\t * Controls whether the find widget should search as you type.\n\t */\n\tfindOnType?: boolean;\n\t/**\n\t * Controls if we seed search string in the Find Widget with editor selection.\n\t */\n\tseedSearchStringFromSelection?: 'never' | 'always' | 'selection';\n\t/**\n\t * Controls if Find in Selection flag is turned on in the editor.\n\t */\n\tautoFindInSelection?: 'never' | 'always' | 'multiline';\n\t/*\n\t * Controls whether the Find Widget should add extra lines on top of the editor.\n\t */\n\taddExtraSpaceOnTop?: boolean;\n\t/**\n\t * @internal\n\t * Controls if the Find Widget should read or modify the shared find clipboard on macOS\n\t */\n\tglobalFindClipboard?: boolean;\n\t/**\n\t * Controls whether the search result and diff result automatically restarts from the beginning (or the end) when no further matches can be found\n\t */\n\tloop?: boolean;\n\t/**\n\t * @internal\n\t * Controls how the find widget search history should be stored\n\t */\n\thistory?: 'never' | 'workspace';\n\t/**\n\t * @internal\n\t * Controls how the replace widget search history should be stored\n\t */\n\treplaceHistory?: 'never' | 'workspace';\n}\n\n/**\n * @internal\n */\nexport type EditorFindOptions = Readonly<Required<IEditorFindOptions>>;\n\nclass EditorFind extends BaseEditorOption<EditorOption.find, IEditorFindOptions, EditorFindOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorFindOptions = {\n\t\t\tcursorMoveOnType: true,\n\t\t\tfindOnType: true,\n\t\t\tseedSearchStringFromSelection: 'always',\n\t\t\tautoFindInSelection: 'never',\n\t\t\tglobalFindClipboard: false,\n\t\t\taddExtraSpaceOnTop: true,\n\t\t\tloop: true,\n\t\t\thistory: 'workspace',\n\t\t\treplaceHistory: 'workspace',\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.find, 'find', defaults,\n\t\t\t{\n\t\t\t\t'editor.find.cursorMoveOnType': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.cursorMoveOnType,\n\t\t\t\t\tdescription: nls.localize('find.cursorMoveOnType', \"Controls whether the cursor should jump to find matches while typing.\")\n\t\t\t\t},\n\t\t\t\t'editor.find.seedSearchStringFromSelection': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['never', 'always', 'selection'],\n\t\t\t\t\tdefault: defaults.seedSearchStringFromSelection,\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.find.seedSearchStringFromSelection.never', 'Never seed search string from the editor selection.'),\n\t\t\t\t\t\tnls.localize('editor.find.seedSearchStringFromSelection.always', 'Always seed search string from the editor selection, including word at cursor position.'),\n\t\t\t\t\t\tnls.localize('editor.find.seedSearchStringFromSelection.selection', 'Only seed search string from the editor selection.')\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('find.seedSearchStringFromSelection', \"Controls whether the search string in the Find Widget is seeded from the editor selection.\")\n\t\t\t\t},\n\t\t\t\t'editor.find.autoFindInSelection': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['never', 'always', 'multiline'],\n\t\t\t\t\tdefault: defaults.autoFindInSelection,\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.find.autoFindInSelection.never', 'Never turn on Find in Selection automatically (default).'),\n\t\t\t\t\t\tnls.localize('editor.find.autoFindInSelection.always', 'Always turn on Find in Selection automatically.'),\n\t\t\t\t\t\tnls.localize('editor.find.autoFindInSelection.multiline', 'Turn on Find in Selection automatically when multiple lines of content are selected.')\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('find.autoFindInSelection', \"Controls the condition for turning on Find in Selection automatically.\")\n\t\t\t\t},\n\t\t\t\t'editor.find.globalFindClipboard': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.globalFindClipboard,\n\t\t\t\t\tdescription: nls.localize('find.globalFindClipboard', \"Controls whether the Find Widget should read or modify the shared find clipboard on macOS.\"),\n\t\t\t\t\tincluded: platform.isMacintosh\n\t\t\t\t},\n\t\t\t\t'editor.find.addExtraSpaceOnTop': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.addExtraSpaceOnTop,\n\t\t\t\t\tdescription: nls.localize('find.addExtraSpaceOnTop', \"Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.\")\n\t\t\t\t},\n\t\t\t\t'editor.find.loop': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.loop,\n\t\t\t\t\tdescription: nls.localize('find.loop', \"Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.\")\n\t\t\t\t},\n\t\t\t\t'editor.find.history': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['never', 'workspace'],\n\t\t\t\t\tdefault: 'workspace',\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.find.history.never', 'Do not store search history from the find widget.'),\n\t\t\t\t\t\tnls.localize('editor.find.history.workspace', 'Store search history across the active workspace'),\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('find.history', \"Controls how the find widget history should be stored\")\n\t\t\t\t},\n\t\t\t\t'editor.find.replaceHistory': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['never', 'workspace'],\n\t\t\t\t\tdefault: 'workspace',\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.find.replaceHistory.never', 'Do not store history from the replace widget.'),\n\t\t\t\t\t\tnls.localize('editor.find.replaceHistory.workspace', 'Store replace history across the active workspace'),\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('find.replaceHistory', \"Controls how the replace widget history should be stored\")\n\t\t\t\t},\n\t\t\t\t'editor.find.findOnType': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.findOnType,\n\t\t\t\t\tdescription: nls.localize('find.findOnType', \"Controls whether the Find Widget should search as you type.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorFindOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorFindOptions>;\n\t\treturn {\n\t\t\tcursorMoveOnType: boolean(input.cursorMoveOnType, this.defaultValue.cursorMoveOnType),\n\t\t\tfindOnType: boolean(input.findOnType, this.defaultValue.findOnType),\n\t\t\tseedSearchStringFromSelection: typeof input.seedSearchStringFromSelection === 'boolean'\n\t\t\t\t? (input.seedSearchStringFromSelection ? 'always' : 'never')\n\t\t\t\t: stringSet<'never' | 'always' | 'selection'>(input.seedSearchStringFromSelection, this.defaultValue.seedSearchStringFromSelection, ['never', 'always', 'selection']),\n\t\t\tautoFindInSelection: typeof input.autoFindInSelection === 'boolean'\n\t\t\t\t? (input.autoFindInSelection ? 'always' : 'never')\n\t\t\t\t: stringSet<'never' | 'always' | 'multiline'>(input.autoFindInSelection, this.defaultValue.autoFindInSelection, ['never', 'always', 'multiline']),\n\t\t\tglobalFindClipboard: boolean(input.globalFindClipboard, this.defaultValue.globalFindClipboard),\n\t\t\taddExtraSpaceOnTop: boolean(input.addExtraSpaceOnTop, this.defaultValue.addExtraSpaceOnTop),\n\t\t\tloop: boolean(input.loop, this.defaultValue.loop),\n\t\t\thistory: stringSet<'never' | 'workspace'>(input.history, this.defaultValue.history, ['never', 'workspace']),\n\t\t\treplaceHistory: stringSet<'never' | 'workspace'>(input.replaceHistory, this.defaultValue.replaceHistory, ['never', 'workspace']),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region fontLigatures\n\n/**\n * @internal\n */\nexport class EditorFontLigatures extends BaseEditorOption<EditorOption.fontLigatures, boolean | string, string> {\n\n\tpublic static OFF = '\"liga\" off, \"calt\" off';\n\tpublic static ON = '\"liga\" on, \"calt\" on';\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.fontLigatures, 'fontLigatures', EditorFontLigatures.OFF,\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdescription: nls.localize('fontLigatures', \"Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.\"),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdescription: nls.localize('fontFeatureSettings', \"Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.\")\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tdescription: nls.localize('fontLigaturesGeneral', \"Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property.\"),\n\t\t\t\tdefault: false\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): string {\n\t\tif (typeof input === 'undefined') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tif (typeof input === 'string') {\n\t\t\tif (input === 'false' || input.length === 0) {\n\t\t\t\treturn EditorFontLigatures.OFF;\n\t\t\t}\n\t\t\tif (input === 'true') {\n\t\t\t\treturn EditorFontLigatures.ON;\n\t\t\t}\n\t\t\treturn input;\n\t\t}\n\t\tif (Boolean(input)) {\n\t\t\treturn EditorFontLigatures.ON;\n\t\t}\n\t\treturn EditorFontLigatures.OFF;\n\t}\n}\n\n//#endregion\n\n//#region fontVariations\n\n/**\n * @internal\n */\nexport class EditorFontVariations extends BaseEditorOption<EditorOption.fontVariations, boolean | string, string> {\n\t// Text is laid out using default settings.\n\tpublic static OFF = FONT_VARIATION_OFF;\n\n\t// Translate `fontWeight` config to the `font-variation-settings` CSS property.\n\tpublic static TRANSLATE = FONT_VARIATION_TRANSLATE;\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.fontVariations, 'fontVariations', EditorFontVariations.OFF,\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdescription: nls.localize('fontVariations', \"Enables/Disables the translation from font-weight to font-variation-settings. Change this to a string for fine-grained control of the 'font-variation-settings' CSS property.\"),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdescription: nls.localize('fontVariationSettings', \"Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.\")\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tdescription: nls.localize('fontVariationsGeneral', \"Configures font variations. Can be either a boolean to enable/disable the translation from font-weight to font-variation-settings or a string for the value of the CSS 'font-variation-settings' property.\"),\n\t\t\t\tdefault: false\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): string {\n\t\tif (typeof input === 'undefined') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tif (typeof input === 'string') {\n\t\t\tif (input === 'false') {\n\t\t\t\treturn EditorFontVariations.OFF;\n\t\t\t}\n\t\t\tif (input === 'true') {\n\t\t\t\treturn EditorFontVariations.TRANSLATE;\n\t\t\t}\n\t\t\treturn input;\n\t\t}\n\t\tif (Boolean(input)) {\n\t\t\treturn EditorFontVariations.TRANSLATE;\n\t\t}\n\t\treturn EditorFontVariations.OFF;\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: string): string {\n\t\t// The value is computed from the fontWeight if it is true.\n\t\t// So take the result from env.fontInfo\n\t\treturn env.fontInfo.fontVariationSettings;\n\t}\n}\n\n//#endregion\n\n//#region fontInfo\n\nclass EditorFontInfo extends ComputedEditorOption<EditorOption.fontInfo, FontInfo> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.fontInfo, new FontInfo({\n\t\t\tpixelRatio: 0,\n\t\t\tfontFamily: '',\n\t\t\tfontWeight: '',\n\t\t\tfontSize: 0,\n\t\t\tfontFeatureSettings: '',\n\t\t\tfontVariationSettings: '',\n\t\t\tlineHeight: 0,\n\t\t\tletterSpacing: 0,\n\t\t\tisMonospace: false,\n\t\t\ttypicalHalfwidthCharacterWidth: 0,\n\t\t\ttypicalFullwidthCharacterWidth: 0,\n\t\t\tcanUseHalfwidthRightwardsArrow: false,\n\t\t\tspaceWidth: 0,\n\t\t\tmiddotWidth: 0,\n\t\t\twsmiddotWidth: 0,\n\t\t\tmaxDigitWidth: 0,\n\t\t}, false));\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: FontInfo): FontInfo {\n\t\treturn env.fontInfo;\n\t}\n}\n\n//#endregion\n\n//#region effectiveCursorStyle\n\nclass EffectiveCursorStyle extends ComputedEditorOption<EditorOption.effectiveCursorStyle, TextEditorCursorStyle> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.effectiveCursorStyle, TextEditorCursorStyle.Line);\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: TextEditorCursorStyle): TextEditorCursorStyle {\n\t\treturn env.inputMode === 'overtype' ?\n\t\t\toptions.get(EditorOption.overtypeCursorStyle) :\n\t\t\toptions.get(EditorOption.cursorStyle);\n\t}\n}\n\n//#endregion\n\n//#region effectiveExperimentalEditContext\n\nclass EffectiveEditContextEnabled extends ComputedEditorOption<EditorOption.effectiveEditContext, boolean> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.effectiveEditContext, false);\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions): boolean {\n\t\treturn env.editContextSupported && options.get(EditorOption.editContext);\n\t}\n}\n\n//#endregion\n\n//#region effectiveAllowVariableFonts\n\nclass EffectiveAllowVariableFonts extends ComputedEditorOption<EditorOption.effectiveAllowVariableFonts, boolean> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.effectiveAllowVariableFonts, false);\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions): boolean {\n\t\tconst accessibilitySupport = env.accessibilitySupport;\n\t\tif (accessibilitySupport === AccessibilitySupport.Enabled) {\n\t\t\treturn options.get(EditorOption.allowVariableFontsInAccessibilityMode);\n\t\t} else {\n\t\t\treturn options.get(EditorOption.allowVariableFonts);\n\t\t}\n\t}\n}\n\n//#engregion\n\n//#region fontSize\n\nclass EditorFontSize extends SimpleEditorOption<EditorOption.fontSize, number> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.fontSize, 'fontSize', EDITOR_FONT_DEFAULTS.fontSize,\n\t\t\t{\n\t\t\t\ttype: 'number',\n\t\t\t\tminimum: 6,\n\t\t\t\tmaximum: 100,\n\t\t\t\tdefault: EDITOR_FONT_DEFAULTS.fontSize,\n\t\t\t\tdescription: nls.localize('fontSize', \"Controls the font size in pixels.\")\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic override validate(input: unknown): number {\n\t\tconst r = EditorFloatOption.float(input, this.defaultValue);\n\t\tif (r === 0) {\n\t\t\treturn EDITOR_FONT_DEFAULTS.fontSize;\n\t\t}\n\t\treturn EditorFloatOption.clamp(r, 6, 100);\n\t}\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: number): number {\n\t\t// The final fontSize respects the editor zoom level.\n\t\t// So take the result from env.fontInfo\n\t\treturn env.fontInfo.fontSize;\n\t}\n}\n\n//#endregion\n\n//#region fontWeight\n\nclass EditorFontWeight extends BaseEditorOption<EditorOption.fontWeight, string, string> {\n\tprivate static SUGGESTION_VALUES = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\n\tprivate static MINIMUM_VALUE = 1;\n\tprivate static MAXIMUM_VALUE = 1000;\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.fontWeight, 'fontWeight', EDITOR_FONT_DEFAULTS.fontWeight,\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tminimum: EditorFontWeight.MINIMUM_VALUE,\n\t\t\t\t\t\tmaximum: EditorFontWeight.MAXIMUM_VALUE,\n\t\t\t\t\t\terrorMessage: nls.localize('fontWeightErrorMessage', \"Only \\\"normal\\\" and \\\"bold\\\" keywords or numbers between 1 and 1000 are allowed.\")\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tpattern: '^(normal|bold|1000|[1-9][0-9]{0,2})$'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tenum: EditorFontWeight.SUGGESTION_VALUES\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tdefault: EDITOR_FONT_DEFAULTS.fontWeight,\n\t\t\t\tdescription: nls.localize('fontWeight', \"Controls the font weight. Accepts \\\"normal\\\" and \\\"bold\\\" keywords or numbers between 1 and 1000.\")\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): string {\n\t\tif (input === 'normal' || input === 'bold') {\n\t\t\treturn input;\n\t\t}\n\t\treturn String(EditorIntOption.clampedInt(input, EDITOR_FONT_DEFAULTS.fontWeight, EditorFontWeight.MINIMUM_VALUE, EditorFontWeight.MAXIMUM_VALUE));\n\t}\n}\n\n//#endregion\n\n//#region gotoLocation\n\nexport type GoToLocationValues = 'peek' | 'gotoAndPeek' | 'goto';\n\n/**\n * Configuration options for go to location\n */\nexport interface IGotoLocationOptions {\n\n\tmultiple?: GoToLocationValues;\n\n\tmultipleDefinitions?: GoToLocationValues;\n\tmultipleTypeDefinitions?: GoToLocationValues;\n\tmultipleDeclarations?: GoToLocationValues;\n\tmultipleImplementations?: GoToLocationValues;\n\tmultipleReferences?: GoToLocationValues;\n\tmultipleTests?: GoToLocationValues;\n\n\talternativeDefinitionCommand?: string;\n\talternativeTypeDefinitionCommand?: string;\n\talternativeDeclarationCommand?: string;\n\talternativeImplementationCommand?: string;\n\talternativeReferenceCommand?: string;\n\talternativeTestsCommand?: string;\n}\n\n/**\n * @internal\n */\nexport type GoToLocationOptions = Readonly<Required<IGotoLocationOptions>>;\n\nclass EditorGoToLocation extends BaseEditorOption<EditorOption.gotoLocation, IGotoLocationOptions, GoToLocationOptions> {\n\n\tconstructor() {\n\t\tconst defaults: GoToLocationOptions = {\n\t\t\tmultiple: 'peek',\n\t\t\tmultipleDefinitions: 'peek',\n\t\t\tmultipleTypeDefinitions: 'peek',\n\t\t\tmultipleDeclarations: 'peek',\n\t\t\tmultipleImplementations: 'peek',\n\t\t\tmultipleReferences: 'peek',\n\t\t\tmultipleTests: 'peek',\n\t\t\talternativeDefinitionCommand: 'editor.action.goToReferences',\n\t\t\talternativeTypeDefinitionCommand: 'editor.action.goToReferences',\n\t\t\talternativeDeclarationCommand: 'editor.action.goToReferences',\n\t\t\talternativeImplementationCommand: '',\n\t\t\talternativeReferenceCommand: '',\n\t\t\talternativeTestsCommand: '',\n\t\t};\n\t\tconst jsonSubset: IJSONSchema = {\n\t\t\ttype: 'string',\n\t\t\tenum: ['peek', 'gotoAndPeek', 'goto'],\n\t\t\tdefault: defaults.multiple,\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('editor.gotoLocation.multiple.peek', 'Show Peek view of the results (default)'),\n\t\t\t\tnls.localize('editor.gotoLocation.multiple.gotoAndPeek', 'Go to the primary result and show a Peek view'),\n\t\t\t\tnls.localize('editor.gotoLocation.multiple.goto', 'Go to the primary result and enable Peek-less navigation to others')\n\t\t\t]\n\t\t};\n\t\tconst alternativeCommandOptions = ['', 'editor.action.referenceSearch.trigger', 'editor.action.goToReferences', 'editor.action.peekImplementation', 'editor.action.goToImplementation', 'editor.action.peekTypeDefinition', 'editor.action.goToTypeDefinition', 'editor.action.peekDeclaration', 'editor.action.revealDeclaration', 'editor.action.peekDefinition', 'editor.action.revealDefinitionAside', 'editor.action.revealDefinition'];\n\t\tsuper(\n\t\t\tEditorOption.gotoLocation, 'gotoLocation', defaults,\n\t\t\t{\n\t\t\t\t'editor.gotoLocation.multiple': {\n\t\t\t\t\tdeprecationMessage: nls.localize('editor.gotoLocation.multiple.deprecated', \"This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.\"),\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.multipleDefinitions': {\n\t\t\t\t\tdescription: nls.localize('editor.editor.gotoLocation.multipleDefinitions', \"Controls the behavior the 'Go to Definition'-command when multiple target locations exist.\"),\n\t\t\t\t\t...jsonSubset,\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.multipleTypeDefinitions': {\n\t\t\t\t\tdescription: nls.localize('editor.editor.gotoLocation.multipleTypeDefinitions', \"Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.\"),\n\t\t\t\t\t...jsonSubset,\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.multipleDeclarations': {\n\t\t\t\t\tdescription: nls.localize('editor.editor.gotoLocation.multipleDeclarations', \"Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.\"),\n\t\t\t\t\t...jsonSubset,\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.multipleImplementations': {\n\t\t\t\t\tdescription: nls.localize('editor.editor.gotoLocation.multipleImplemenattions', \"Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.\"),\n\t\t\t\t\t...jsonSubset,\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.multipleReferences': {\n\t\t\t\t\tdescription: nls.localize('editor.editor.gotoLocation.multipleReferences', \"Controls the behavior the 'Go to References'-command when multiple target locations exist.\"),\n\t\t\t\t\t...jsonSubset,\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.alternativeDefinitionCommand': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.alternativeDefinitionCommand,\n\t\t\t\t\tenum: alternativeCommandOptions,\n\t\t\t\t\tdescription: nls.localize('alternativeDefinitionCommand', \"Alternative command id that is being executed when the result of 'Go to Definition' is the current location.\")\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.alternativeTypeDefinitionCommand': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.alternativeTypeDefinitionCommand,\n\t\t\t\t\tenum: alternativeCommandOptions,\n\t\t\t\t\tdescription: nls.localize('alternativeTypeDefinitionCommand', \"Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.\")\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.alternativeDeclarationCommand': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.alternativeDeclarationCommand,\n\t\t\t\t\tenum: alternativeCommandOptions,\n\t\t\t\t\tdescription: nls.localize('alternativeDeclarationCommand', \"Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.\")\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.alternativeImplementationCommand': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.alternativeImplementationCommand,\n\t\t\t\t\tenum: alternativeCommandOptions,\n\t\t\t\t\tdescription: nls.localize('alternativeImplementationCommand', \"Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.\")\n\t\t\t\t},\n\t\t\t\t'editor.gotoLocation.alternativeReferenceCommand': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.alternativeReferenceCommand,\n\t\t\t\t\tenum: alternativeCommandOptions,\n\t\t\t\t\tdescription: nls.localize('alternativeReferenceCommand', \"Alternative command id that is being executed when the result of 'Go to Reference' is the current location.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): GoToLocationOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IGotoLocationOptions>;\n\t\treturn {\n\t\t\tmultiple: stringSet<GoToLocationValues>(input.multiple, this.defaultValue.multiple, ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleDefinitions: stringSet<GoToLocationValues>(input.multipleDefinitions, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleTypeDefinitions: stringSet<GoToLocationValues>(input.multipleTypeDefinitions, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleDeclarations: stringSet<GoToLocationValues>(input.multipleDeclarations, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleImplementations: stringSet<GoToLocationValues>(input.multipleImplementations, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleReferences: stringSet<GoToLocationValues>(input.multipleReferences, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\tmultipleTests: stringSet<GoToLocationValues>(input.multipleTests, 'peek', ['peek', 'gotoAndPeek', 'goto']),\n\t\t\talternativeDefinitionCommand: EditorStringOption.string(input.alternativeDefinitionCommand, this.defaultValue.alternativeDefinitionCommand),\n\t\t\talternativeTypeDefinitionCommand: EditorStringOption.string(input.alternativeTypeDefinitionCommand, this.defaultValue.alternativeTypeDefinitionCommand),\n\t\t\talternativeDeclarationCommand: EditorStringOption.string(input.alternativeDeclarationCommand, this.defaultValue.alternativeDeclarationCommand),\n\t\t\talternativeImplementationCommand: EditorStringOption.string(input.alternativeImplementationCommand, this.defaultValue.alternativeImplementationCommand),\n\t\t\talternativeReferenceCommand: EditorStringOption.string(input.alternativeReferenceCommand, this.defaultValue.alternativeReferenceCommand),\n\t\t\talternativeTestsCommand: EditorStringOption.string(input.alternativeTestsCommand, this.defaultValue.alternativeTestsCommand),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region hover\n\n/**\n * Configuration options for editor hover\n */\nexport interface IEditorHoverOptions {\n\t/**\n\t * Enable the hover.\n\t * Defaults to true.\n\t */\n\tenabled?: boolean;\n\t/**\n\t * Delay for showing the hover.\n\t * Defaults to 300.\n\t */\n\tdelay?: number;\n\t/**\n\t * Is the hover sticky such that it can be clicked and its contents selected?\n\t * Defaults to true.\n\t */\n\tsticky?: boolean;\n\t/**\n\t * Controls how long the hover is visible after you hovered out of it.\n\t * Require sticky setting to be true.\n\t */\n\thidingDelay?: number;\n\t/**\n\t * Should the hover be shown above the line if possible?\n\t * Defaults to false.\n\t */\n\tabove?: boolean;\n}\n\n/**\n * @internal\n */\nexport type EditorHoverOptions = Readonly<Required<IEditorHoverOptions>>;\n\nclass EditorHover extends BaseEditorOption<EditorOption.hover, IEditorHoverOptions, EditorHoverOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorHoverOptions = {\n\t\t\tenabled: true,\n\t\t\tdelay: 300,\n\t\t\thidingDelay: 300,\n\t\t\tsticky: true,\n\t\t\tabove: true,\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.hover, 'hover', defaults,\n\t\t\t{\n\t\t\t\t'editor.hover.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('hover.enabled', \"Controls whether the hover is shown.\")\n\t\t\t\t},\n\t\t\t\t'editor.hover.delay': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.delay,\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tmaximum: 10000,\n\t\t\t\t\tdescription: nls.localize('hover.delay', \"Controls the delay in milliseconds after which the hover is shown.\")\n\t\t\t\t},\n\t\t\t\t'editor.hover.sticky': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.sticky,\n\t\t\t\t\tdescription: nls.localize('hover.sticky', \"Controls whether the hover should remain visible when mouse is moved over it.\")\n\t\t\t\t},\n\t\t\t\t'editor.hover.hidingDelay': {\n\t\t\t\t\ttype: 'integer',\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tdefault: defaults.hidingDelay,\n\t\t\t\t\tmarkdownDescription: nls.localize('hover.hidingDelay', \"Controls the delay in milliseconds after which the hover is hidden. Requires `#editor.hover.sticky#` to be enabled.\")\n\t\t\t\t},\n\t\t\t\t'editor.hover.above': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.above,\n\t\t\t\t\tdescription: nls.localize('hover.above', \"Prefer showing hovers above the line, if there's space.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorHoverOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorHoverOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tdelay: EditorIntOption.clampedInt(input.delay, this.defaultValue.delay, 0, 10000),\n\t\t\tsticky: boolean(input.sticky, this.defaultValue.sticky),\n\t\t\thidingDelay: EditorIntOption.clampedInt(input.hidingDelay, this.defaultValue.hidingDelay, 0, 600000),\n\t\t\tabove: boolean(input.above, this.defaultValue.above),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region layoutInfo\n\n/**\n * A description for the overview ruler position.\n */\nexport interface OverviewRulerPosition {\n\t/**\n\t * Width of the overview ruler\n\t */\n\treadonly width: number;\n\t/**\n\t * Height of the overview ruler\n\t */\n\treadonly height: number;\n\t/**\n\t * Top position for the overview ruler\n\t */\n\treadonly top: number;\n\t/**\n\t * Right position for the overview ruler\n\t */\n\treadonly right: number;\n}\n\nexport const enum RenderMinimap {\n\tNone = 0,\n\tText = 1,\n\tBlocks = 2,\n}\n\n/**\n * The internal layout details of the editor.\n */\nexport interface EditorLayoutInfo {\n\n\t/**\n\t * Full editor width.\n\t */\n\treadonly width: number;\n\t/**\n\t * Full editor height.\n\t */\n\treadonly height: number;\n\n\t/**\n\t * Left position for the glyph margin.\n\t */\n\treadonly glyphMarginLeft: number;\n\t/**\n\t * The width of the glyph margin.\n\t */\n\treadonly glyphMarginWidth: number;\n\n\t/**\n\t * The number of decoration lanes to render in the glyph margin.\n\t */\n\treadonly glyphMarginDecorationLaneCount: number;\n\n\t/**\n\t * Left position for the line numbers.\n\t */\n\treadonly lineNumbersLeft: number;\n\t/**\n\t * The width of the line numbers.\n\t */\n\treadonly lineNumbersWidth: number;\n\n\t/**\n\t * Left position for the line decorations.\n\t */\n\treadonly decorationsLeft: number;\n\t/**\n\t * The width of the line decorations.\n\t */\n\treadonly decorationsWidth: number;\n\n\t/**\n\t * Left position for the content (actual text)\n\t */\n\treadonly contentLeft: number;\n\t/**\n\t * The width of the content (actual text)\n\t */\n\treadonly contentWidth: number;\n\n\t/**\n\t * Layout information for the minimap\n\t */\n\treadonly minimap: EditorMinimapLayoutInfo;\n\n\t/**\n\t * The number of columns (of typical characters) fitting on a viewport line.\n\t */\n\treadonly viewportColumn: number;\n\n\treadonly isWordWrapMinified: boolean;\n\treadonly isViewportWrapping: boolean;\n\treadonly wrappingColumn: number;\n\n\t/**\n\t * The width of the vertical scrollbar.\n\t */\n\treadonly verticalScrollbarWidth: number;\n\t/**\n\t * The height of the horizontal scrollbar.\n\t */\n\treadonly horizontalScrollbarHeight: number;\n\n\t/**\n\t * The position of the overview ruler.\n\t */\n\treadonly overviewRuler: OverviewRulerPosition;\n}\n\n/**\n * The internal layout details of the editor.\n */\nexport interface EditorMinimapLayoutInfo {\n\treadonly renderMinimap: RenderMinimap;\n\treadonly minimapLeft: number;\n\treadonly minimapWidth: number;\n\treadonly minimapHeightIsEditorHeight: boolean;\n\treadonly minimapIsSampling: boolean;\n\treadonly minimapScale: number;\n\treadonly minimapLineHeight: number;\n\treadonly minimapCanvasInnerWidth: number;\n\treadonly minimapCanvasInnerHeight: number;\n\treadonly minimapCanvasOuterWidth: number;\n\treadonly minimapCanvasOuterHeight: number;\n}\n\n/**\n * @internal\n */\nexport interface EditorLayoutInfoComputerEnv {\n\treadonly memory: ComputeOptionsMemory | null;\n\treadonly outerWidth: number;\n\treadonly outerHeight: number;\n\treadonly isDominatedByLongLines: boolean;\n\treadonly lineHeight: number;\n\treadonly viewLineCount: number;\n\treadonly lineNumbersDigitCount: number;\n\treadonly typicalHalfwidthCharacterWidth: number;\n\treadonly maxDigitWidth: number;\n\treadonly pixelRatio: number;\n\treadonly glyphMarginDecorationLaneCount: number;\n}\n\n/**\n * @internal\n */\nexport interface IMinimapLayoutInput {\n\treadonly outerWidth: number;\n\treadonly outerHeight: number;\n\treadonly lineHeight: number;\n\treadonly typicalHalfwidthCharacterWidth: number;\n\treadonly pixelRatio: number;\n\treadonly scrollBeyondLastLine: boolean;\n\treadonly paddingTop: number;\n\treadonly paddingBottom: number;\n\treadonly minimap: Readonly<Required<IEditorMinimapOptions>>;\n\treadonly verticalScrollbarWidth: number;\n\treadonly viewLineCount: number;\n\treadonly remainingWidth: number;\n\treadonly isViewportWrapping: boolean;\n}\n\n/**\n * @internal\n */\nexport class EditorLayoutInfoComputer extends ComputedEditorOption<EditorOption.layoutInfo, EditorLayoutInfo> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.layoutInfo, {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tglyphMarginLeft: 0,\n\t\t\tglyphMarginWidth: 0,\n\t\t\tglyphMarginDecorationLaneCount: 0,\n\t\t\tlineNumbersLeft: 0,\n\t\t\tlineNumbersWidth: 0,\n\t\t\tdecorationsLeft: 0,\n\t\t\tdecorationsWidth: 0,\n\t\t\tcontentLeft: 0,\n\t\t\tcontentWidth: 0,\n\t\t\tminimap: {\n\t\t\t\trenderMinimap: RenderMinimap.None,\n\t\t\t\tminimapLeft: 0,\n\t\t\t\tminimapWidth: 0,\n\t\t\t\tminimapHeightIsEditorHeight: false,\n\t\t\t\tminimapIsSampling: false,\n\t\t\t\tminimapScale: 1,\n\t\t\t\tminimapLineHeight: 1,\n\t\t\t\tminimapCanvasInnerWidth: 0,\n\t\t\t\tminimapCanvasInnerHeight: 0,\n\t\t\t\tminimapCanvasOuterWidth: 0,\n\t\t\t\tminimapCanvasOuterHeight: 0,\n\t\t\t},\n\t\t\tviewportColumn: 0,\n\t\t\tisWordWrapMinified: false,\n\t\t\tisViewportWrapping: false,\n\t\t\twrappingColumn: -1,\n\t\t\tverticalScrollbarWidth: 0,\n\t\t\thorizontalScrollbarHeight: 0,\n\t\t\toverviewRuler: {\n\t\t\t\ttop: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tright: 0\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: EditorLayoutInfo): EditorLayoutInfo {\n\t\treturn EditorLayoutInfoComputer.computeLayout(options, {\n\t\t\tmemory: env.memory,\n\t\t\touterWidth: env.outerWidth,\n\t\t\touterHeight: env.outerHeight,\n\t\t\tisDominatedByLongLines: env.isDominatedByLongLines,\n\t\t\tlineHeight: env.fontInfo.lineHeight,\n\t\t\tviewLineCount: env.viewLineCount,\n\t\t\tlineNumbersDigitCount: env.lineNumbersDigitCount,\n\t\t\ttypicalHalfwidthCharacterWidth: env.fontInfo.typicalHalfwidthCharacterWidth,\n\t\t\tmaxDigitWidth: env.fontInfo.maxDigitWidth,\n\t\t\tpixelRatio: env.pixelRatio,\n\t\t\tglyphMarginDecorationLaneCount: env.glyphMarginDecorationLaneCount\n\t\t});\n\t}\n\n\tpublic static computeContainedMinimapLineCount(input: {\n\t\tviewLineCount: number;\n\t\tscrollBeyondLastLine: boolean;\n\t\tpaddingTop: number;\n\t\tpaddingBottom: number;\n\t\theight: number;\n\t\tlineHeight: number;\n\t\tpixelRatio: number;\n\t}): { typicalViewportLineCount: number; extraLinesBeforeFirstLine: number; extraLinesBeyondLastLine: number; desiredRatio: number; minimapLineCount: number } {\n\t\tconst typicalViewportLineCount = input.height / input.lineHeight;\n\t\tconst extraLinesBeforeFirstLine = Math.floor(input.paddingTop / input.lineHeight);\n\t\tlet extraLinesBeyondLastLine = Math.floor(input.paddingBottom / input.lineHeight);\n\t\tif (input.scrollBeyondLastLine) {\n\t\t\textraLinesBeyondLastLine = Math.max(extraLinesBeyondLastLine, typicalViewportLineCount - 1);\n\t\t}\n\t\tconst desiredRatio = (extraLinesBeforeFirstLine + input.viewLineCount + extraLinesBeyondLastLine) / (input.pixelRatio * input.height);\n\t\tconst minimapLineCount = Math.floor(input.viewLineCount / desiredRatio);\n\t\treturn { typicalViewportLineCount, extraLinesBeforeFirstLine, extraLinesBeyondLastLine, desiredRatio, minimapLineCount };\n\t}\n\n\tprivate static _computeMinimapLayout(input: IMinimapLayoutInput, memory: ComputeOptionsMemory): EditorMinimapLayoutInfo {\n\t\tconst outerWidth = input.outerWidth;\n\t\tconst outerHeight = input.outerHeight;\n\t\tconst pixelRatio = input.pixelRatio;\n\n\t\tif (!input.minimap.enabled) {\n\t\t\treturn {\n\t\t\t\trenderMinimap: RenderMinimap.None,\n\t\t\t\tminimapLeft: 0,\n\t\t\t\tminimapWidth: 0,\n\t\t\t\tminimapHeightIsEditorHeight: false,\n\t\t\t\tminimapIsSampling: false,\n\t\t\t\tminimapScale: 1,\n\t\t\t\tminimapLineHeight: 1,\n\t\t\t\tminimapCanvasInnerWidth: 0,\n\t\t\t\tminimapCanvasInnerHeight: Math.floor(pixelRatio * outerHeight),\n\t\t\t\tminimapCanvasOuterWidth: 0,\n\t\t\t\tminimapCanvasOuterHeight: outerHeight,\n\t\t\t};\n\t\t}\n\n\t\t// Can use memory if only the `viewLineCount` and `remainingWidth` have changed\n\t\tconst stableMinimapLayoutInput = memory.stableMinimapLayoutInput;\n\t\tconst couldUseMemory = (\n\t\t\tstableMinimapLayoutInput\n\t\t\t// && input.outerWidth === lastMinimapLayoutInput.outerWidth !!! INTENTIONAL OMITTED\n\t\t\t&& input.outerHeight === stableMinimapLayoutInput.outerHeight\n\t\t\t&& input.lineHeight === stableMinimapLayoutInput.lineHeight\n\t\t\t&& input.typicalHalfwidthCharacterWidth === stableMinimapLayoutInput.typicalHalfwidthCharacterWidth\n\t\t\t&& input.pixelRatio === stableMinimapLayoutInput.pixelRatio\n\t\t\t&& input.scrollBeyondLastLine === stableMinimapLayoutInput.scrollBeyondLastLine\n\t\t\t&& input.paddingTop === stableMinimapLayoutInput.paddingTop\n\t\t\t&& input.paddingBottom === stableMinimapLayoutInput.paddingBottom\n\t\t\t&& input.minimap.enabled === stableMinimapLayoutInput.minimap.enabled\n\t\t\t&& input.minimap.side === stableMinimapLayoutInput.minimap.side\n\t\t\t&& input.minimap.size === stableMinimapLayoutInput.minimap.size\n\t\t\t&& input.minimap.showSlider === stableMinimapLayoutInput.minimap.showSlider\n\t\t\t&& input.minimap.renderCharacters === stableMinimapLayoutInput.minimap.renderCharacters\n\t\t\t&& input.minimap.maxColumn === stableMinimapLayoutInput.minimap.maxColumn\n\t\t\t&& input.minimap.scale === stableMinimapLayoutInput.minimap.scale\n\t\t\t&& input.verticalScrollbarWidth === stableMinimapLayoutInput.verticalScrollbarWidth\n\t\t\t// && input.viewLineCount === lastMinimapLayoutInput.viewLineCount !!! INTENTIONAL OMITTED\n\t\t\t// && input.remainingWidth === lastMinimapLayoutInput.remainingWidth !!! INTENTIONAL OMITTED\n\t\t\t&& input.isViewportWrapping === stableMinimapLayoutInput.isViewportWrapping\n\t\t);\n\n\t\tconst lineHeight = input.lineHeight;\n\t\tconst typicalHalfwidthCharacterWidth = input.typicalHalfwidthCharacterWidth;\n\t\tconst scrollBeyondLastLine = input.scrollBeyondLastLine;\n\t\tconst minimapRenderCharacters = input.minimap.renderCharacters;\n\t\tlet minimapScale = (pixelRatio >= 2 ? Math.round(input.minimap.scale * 2) : input.minimap.scale);\n\t\tconst minimapMaxColumn = input.minimap.maxColumn;\n\t\tconst minimapSize = input.minimap.size;\n\t\tconst minimapSide = input.minimap.side;\n\t\tconst verticalScrollbarWidth = input.verticalScrollbarWidth;\n\t\tconst viewLineCount = input.viewLineCount;\n\t\tconst remainingWidth = input.remainingWidth;\n\t\tconst isViewportWrapping = input.isViewportWrapping;\n\n\t\tconst baseCharHeight = minimapRenderCharacters ? 2 : 3;\n\t\tlet minimapCanvasInnerHeight = Math.floor(pixelRatio * outerHeight);\n\t\tconst minimapCanvasOuterHeight = minimapCanvasInnerHeight / pixelRatio;\n\t\tlet minimapHeightIsEditorHeight = false;\n\t\tlet minimapIsSampling = false;\n\t\tlet minimapLineHeight = baseCharHeight * minimapScale;\n\t\tlet minimapCharWidth = minimapScale / pixelRatio;\n\t\tlet minimapWidthMultiplier: number = 1;\n\n\t\tif (minimapSize === 'fill' || minimapSize === 'fit') {\n\t\t\tconst { typicalViewportLineCount, extraLinesBeforeFirstLine, extraLinesBeyondLastLine, desiredRatio, minimapLineCount } = EditorLayoutInfoComputer.computeContainedMinimapLineCount({\n\t\t\t\tviewLineCount: viewLineCount,\n\t\t\t\tscrollBeyondLastLine: scrollBeyondLastLine,\n\t\t\t\tpaddingTop: input.paddingTop,\n\t\t\t\tpaddingBottom: input.paddingBottom,\n\t\t\t\theight: outerHeight,\n\t\t\t\tlineHeight: lineHeight,\n\t\t\t\tpixelRatio: pixelRatio\n\t\t\t});\n\t\t\t// ratio is intentionally not part of the layout to avoid the layout changing all the time\n\t\t\t// when doing sampling\n\t\t\tconst ratio = viewLineCount / minimapLineCount;\n\n\t\t\tif (ratio > 1) {\n\t\t\t\tminimapHeightIsEditorHeight = true;\n\t\t\t\tminimapIsSampling = true;\n\t\t\t\tminimapScale = 1;\n\t\t\t\tminimapLineHeight = 1;\n\t\t\t\tminimapCharWidth = minimapScale / pixelRatio;\n\t\t\t} else {\n\t\t\t\tlet fitBecomesFill = false;\n\t\t\t\tlet maxMinimapScale = minimapScale + 1;\n\n\t\t\t\tif (minimapSize === 'fit') {\n\t\t\t\t\tconst effectiveMinimapHeight = Math.ceil((extraLinesBeforeFirstLine + viewLineCount + extraLinesBeyondLastLine) * minimapLineHeight);\n\t\t\t\t\tif (isViewportWrapping && couldUseMemory && remainingWidth <= memory.stableFitRemainingWidth) {\n\t\t\t\t\t\t// There is a loop when using `fit` and viewport wrapping:\n\t\t\t\t\t\t// - view line count impacts minimap layout\n\t\t\t\t\t\t// - minimap layout impacts viewport width\n\t\t\t\t\t\t// - viewport width impacts view line count\n\t\t\t\t\t\t// To break the loop, once we go to a smaller minimap scale, we try to stick with it.\n\t\t\t\t\t\tfitBecomesFill = true;\n\t\t\t\t\t\tmaxMinimapScale = memory.stableFitMaxMinimapScale;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfitBecomesFill = (effectiveMinimapHeight > minimapCanvasInnerHeight);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (minimapSize === 'fill' || fitBecomesFill) {\n\t\t\t\t\tminimapHeightIsEditorHeight = true;\n\t\t\t\t\tconst configuredMinimapScale = minimapScale;\n\t\t\t\t\tminimapLineHeight = Math.min(lineHeight * pixelRatio, Math.max(1, Math.floor(1 / desiredRatio)));\n\t\t\t\t\tif (isViewportWrapping && couldUseMemory && remainingWidth <= memory.stableFitRemainingWidth) {\n\t\t\t\t\t\t// There is a loop when using `fill` and viewport wrapping:\n\t\t\t\t\t\t// - view line count impacts minimap layout\n\t\t\t\t\t\t// - minimap layout impacts viewport width\n\t\t\t\t\t\t// - viewport width impacts view line count\n\t\t\t\t\t\t// To break the loop, once we go to a smaller minimap scale, we try to stick with it.\n\t\t\t\t\t\tmaxMinimapScale = memory.stableFitMaxMinimapScale;\n\t\t\t\t\t}\n\t\t\t\t\tminimapScale = Math.min(maxMinimapScale, Math.max(1, Math.floor(minimapLineHeight / baseCharHeight)));\n\t\t\t\t\tif (minimapScale > configuredMinimapScale) {\n\t\t\t\t\t\tminimapWidthMultiplier = Math.min(2, minimapScale / configuredMinimapScale);\n\t\t\t\t\t}\n\t\t\t\t\tminimapCharWidth = minimapScale / pixelRatio / minimapWidthMultiplier;\n\t\t\t\t\tminimapCanvasInnerHeight = Math.ceil((Math.max(typicalViewportLineCount, extraLinesBeforeFirstLine + viewLineCount + extraLinesBeyondLastLine)) * minimapLineHeight);\n\t\t\t\t\tif (isViewportWrapping) {\n\t\t\t\t\t\t// remember for next time\n\t\t\t\t\t\tmemory.stableMinimapLayoutInput = input;\n\t\t\t\t\t\tmemory.stableFitRemainingWidth = remainingWidth;\n\t\t\t\t\t\tmemory.stableFitMaxMinimapScale = minimapScale;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmemory.stableMinimapLayoutInput = null;\n\t\t\t\t\t\tmemory.stableFitRemainingWidth = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Given:\n\t\t// (leaving 2px for the cursor to have space after the last character)\n\t\t// viewportColumn = (contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth\n\t\t// minimapWidth = viewportColumn * minimapCharWidth\n\t\t// contentWidth = remainingWidth - minimapWidth\n\t\t// What are good values for contentWidth and minimapWidth ?\n\n\t\t// minimapWidth = ((contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth) * minimapCharWidth\n\t\t// typicalHalfwidthCharacterWidth * minimapWidth = (contentWidth - verticalScrollbarWidth - 2) * minimapCharWidth\n\t\t// typicalHalfwidthCharacterWidth * minimapWidth = (remainingWidth - minimapWidth - verticalScrollbarWidth - 2) * minimapCharWidth\n\t\t// (typicalHalfwidthCharacterWidth + minimapCharWidth) * minimapWidth = (remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth\n\t\t// minimapWidth = ((remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth)\n\n\t\tconst minimapMaxWidth = Math.floor(minimapMaxColumn * minimapCharWidth);\n\t\tconst minimapWidth = Math.min(minimapMaxWidth, Math.max(0, Math.floor(((remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth))) + MINIMAP_GUTTER_WIDTH);\n\n\t\tlet minimapCanvasInnerWidth = Math.floor(pixelRatio * minimapWidth);\n\t\tconst minimapCanvasOuterWidth = minimapCanvasInnerWidth / pixelRatio;\n\t\tminimapCanvasInnerWidth = Math.floor(minimapCanvasInnerWidth * minimapWidthMultiplier);\n\n\t\tconst renderMinimap = (minimapRenderCharacters ? RenderMinimap.Text : RenderMinimap.Blocks);\n\t\tconst minimapLeft = (minimapSide === 'left' ? 0 : (outerWidth - minimapWidth - verticalScrollbarWidth));\n\n\t\treturn {\n\t\t\trenderMinimap,\n\t\t\tminimapLeft,\n\t\t\tminimapWidth,\n\t\t\tminimapHeightIsEditorHeight,\n\t\t\tminimapIsSampling,\n\t\t\tminimapScale,\n\t\t\tminimapLineHeight,\n\t\t\tminimapCanvasInnerWidth,\n\t\t\tminimapCanvasInnerHeight,\n\t\t\tminimapCanvasOuterWidth,\n\t\t\tminimapCanvasOuterHeight,\n\t\t};\n\t}\n\n\tpublic static computeLayout(options: IComputedEditorOptions, env: EditorLayoutInfoComputerEnv): EditorLayoutInfo {\n\t\tconst outerWidth = env.outerWidth | 0;\n\t\tconst outerHeight = env.outerHeight | 0;\n\t\tconst lineHeight = env.lineHeight | 0;\n\t\tconst lineNumbersDigitCount = env.lineNumbersDigitCount | 0;\n\t\tconst typicalHalfwidthCharacterWidth = env.typicalHalfwidthCharacterWidth;\n\t\tconst maxDigitWidth = env.maxDigitWidth;\n\t\tconst pixelRatio = env.pixelRatio;\n\t\tconst viewLineCount = env.viewLineCount;\n\n\t\tconst wordWrapOverride2 = options.get(EditorOption.wordWrapOverride2);\n\t\tconst wordWrapOverride1 = (wordWrapOverride2 === 'inherit' ? options.get(EditorOption.wordWrapOverride1) : wordWrapOverride2);\n\t\tconst wordWrap = (wordWrapOverride1 === 'inherit' ? options.get(EditorOption.wordWrap) : wordWrapOverride1);\n\n\t\tconst wordWrapColumn = options.get(EditorOption.wordWrapColumn);\n\t\tconst isDominatedByLongLines = env.isDominatedByLongLines;\n\n\t\tconst showGlyphMargin = options.get(EditorOption.glyphMargin);\n\t\tconst showLineNumbers = (options.get(EditorOption.lineNumbers).renderType !== RenderLineNumbersType.Off);\n\t\tconst lineNumbersMinChars = options.get(EditorOption.lineNumbersMinChars);\n\t\tconst scrollBeyondLastLine = options.get(EditorOption.scrollBeyondLastLine);\n\t\tconst padding = options.get(EditorOption.padding);\n\t\tconst minimap = options.get(EditorOption.minimap);\n\n\t\tconst scrollbar = options.get(EditorOption.scrollbar);\n\t\tconst verticalScrollbarWidth = scrollbar.verticalScrollbarSize;\n\t\tconst verticalScrollbarHasArrows = scrollbar.verticalHasArrows;\n\t\tconst scrollbarArrowSize = scrollbar.arrowSize;\n\t\tconst horizontalScrollbarHeight = scrollbar.horizontalScrollbarSize;\n\n\t\tconst folding = options.get(EditorOption.folding);\n\t\tconst showFoldingDecoration = options.get(EditorOption.showFoldingControls) !== 'never';\n\n\t\tlet lineDecorationsWidth = options.get(EditorOption.lineDecorationsWidth);\n\t\tif (folding && showFoldingDecoration) {\n\t\t\tlineDecorationsWidth += 16;\n\t\t}\n\n\t\tlet lineNumbersWidth = 0;\n\t\tif (showLineNumbers) {\n\t\t\tconst digitCount = Math.max(lineNumbersDigitCount, lineNumbersMinChars);\n\t\t\tlineNumbersWidth = Math.round(digitCount * maxDigitWidth);\n\t\t}\n\n\t\tlet glyphMarginWidth = 0;\n\t\tif (showGlyphMargin) {\n\t\t\tglyphMarginWidth = lineHeight * env.glyphMarginDecorationLaneCount;\n\t\t}\n\n\t\tlet glyphMarginLeft = 0;\n\t\tlet lineNumbersLeft = glyphMarginLeft + glyphMarginWidth;\n\t\tlet decorationsLeft = lineNumbersLeft + lineNumbersWidth;\n\t\tlet contentLeft = decorationsLeft + lineDecorationsWidth;\n\n\t\tconst remainingWidth = outerWidth - glyphMarginWidth - lineNumbersWidth - lineDecorationsWidth;\n\n\t\tlet isWordWrapMinified = false;\n\t\tlet isViewportWrapping = false;\n\t\tlet wrappingColumn = -1;\n\n\t\tif (options.get(EditorOption.accessibilitySupport) === AccessibilitySupport.Enabled && wordWrapOverride1 === 'inherit' && isDominatedByLongLines) {\n\t\t\t// Force viewport width wrapping if model is dominated by long lines\n\t\t\tisWordWrapMinified = true;\n\t\t\tisViewportWrapping = true;\n\t\t} else if (wordWrap === 'on' || wordWrap === 'bounded') {\n\t\t\tisViewportWrapping = true;\n\t\t} else if (wordWrap === 'wordWrapColumn') {\n\t\t\twrappingColumn = wordWrapColumn;\n\t\t}\n\n\t\tconst minimapLayout = EditorLayoutInfoComputer._computeMinimapLayout({\n\t\t\touterWidth: outerWidth,\n\t\t\touterHeight: outerHeight,\n\t\t\tlineHeight: lineHeight,\n\t\t\ttypicalHalfwidthCharacterWidth: typicalHalfwidthCharacterWidth,\n\t\t\tpixelRatio: pixelRatio,\n\t\t\tscrollBeyondLastLine: scrollBeyondLastLine,\n\t\t\tpaddingTop: padding.top,\n\t\t\tpaddingBottom: padding.bottom,\n\t\t\tminimap: minimap,\n\t\t\tverticalScrollbarWidth: verticalScrollbarWidth,\n\t\t\tviewLineCount: viewLineCount,\n\t\t\tremainingWidth: remainingWidth,\n\t\t\tisViewportWrapping: isViewportWrapping,\n\t\t}, env.memory || new ComputeOptionsMemory());\n\n\t\tif (minimapLayout.renderMinimap !== RenderMinimap.None && minimapLayout.minimapLeft === 0) {\n\t\t\t// the minimap is rendered to the left, so move everything to the right\n\t\t\tglyphMarginLeft += minimapLayout.minimapWidth;\n\t\t\tlineNumbersLeft += minimapLayout.minimapWidth;\n\t\t\tdecorationsLeft += minimapLayout.minimapWidth;\n\t\t\tcontentLeft += minimapLayout.minimapWidth;\n\t\t}\n\t\tconst contentWidth = remainingWidth - minimapLayout.minimapWidth;\n\n\t\t// (leaving 2px for the cursor to have space after the last character)\n\t\tconst viewportColumn = Math.max(1, Math.floor((contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth));\n\n\t\tconst verticalArrowSize = (verticalScrollbarHasArrows ? scrollbarArrowSize : 0);\n\n\t\tif (isViewportWrapping) {\n\t\t\t// compute the actual wrappingColumn\n\t\t\twrappingColumn = Math.max(1, viewportColumn);\n\t\t\tif (wordWrap === 'bounded') {\n\t\t\t\twrappingColumn = Math.min(wrappingColumn, wordWrapColumn);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\twidth: outerWidth,\n\t\t\theight: outerHeight,\n\n\t\t\tglyphMarginLeft: glyphMarginLeft,\n\t\t\tglyphMarginWidth: glyphMarginWidth,\n\t\t\tglyphMarginDecorationLaneCount: env.glyphMarginDecorationLaneCount,\n\n\t\t\tlineNumbersLeft: lineNumbersLeft,\n\t\t\tlineNumbersWidth: lineNumbersWidth,\n\n\t\t\tdecorationsLeft: decorationsLeft,\n\t\t\tdecorationsWidth: lineDecorationsWidth,\n\n\t\t\tcontentLeft: contentLeft,\n\t\t\tcontentWidth: contentWidth,\n\n\t\t\tminimap: minimapLayout,\n\n\t\t\tviewportColumn: viewportColumn,\n\n\t\t\tisWordWrapMinified: isWordWrapMinified,\n\t\t\tisViewportWrapping: isViewportWrapping,\n\t\t\twrappingColumn: wrappingColumn,\n\n\t\t\tverticalScrollbarWidth: verticalScrollbarWidth,\n\t\t\thorizontalScrollbarHeight: horizontalScrollbarHeight,\n\n\t\t\toverviewRuler: {\n\t\t\t\ttop: verticalArrowSize,\n\t\t\t\twidth: verticalScrollbarWidth,\n\t\t\t\theight: (outerHeight - 2 * verticalArrowSize),\n\t\t\t\tright: 0\n\t\t\t}\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region WrappingStrategy\nclass WrappingStrategy extends BaseEditorOption<EditorOption.wrappingStrategy, 'simple' | 'advanced', 'simple' | 'advanced'> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.wrappingStrategy, 'wrappingStrategy', 'simple',\n\t\t\t{\n\t\t\t\t'editor.wrappingStrategy': {\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('wrappingStrategy.simple', \"Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width.\"),\n\t\t\t\t\t\tnls.localize('wrappingStrategy.advanced', \"Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.\")\n\t\t\t\t\t],\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['simple', 'advanced'],\n\t\t\t\t\tdefault: 'simple',\n\t\t\t\t\tdescription: nls.localize('wrappingStrategy', \"Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): 'simple' | 'advanced' {\n\t\treturn stringSet<'simple' | 'advanced'>(input, 'simple', ['simple', 'advanced']);\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: 'simple' | 'advanced'): 'simple' | 'advanced' {\n\t\tconst accessibilitySupport = options.get(EditorOption.accessibilitySupport);\n\t\tif (accessibilitySupport === AccessibilitySupport.Enabled) {\n\t\t\t// if we know for a fact that a screen reader is attached, we switch our strategy to advanced to\n\t\t\t// help that the editor's wrapping points match the textarea's wrapping points\n\t\t\treturn 'advanced';\n\t\t}\n\t\treturn value;\n\t}\n}\n//#endregion\n\n//#region lightbulb\n\nexport enum ShowLightbulbIconMode {\n\tOff = 'off',\n\tOnCode = 'onCode',\n\tOn = 'on'\n}\n\n/**\n * Configuration options for editor lightbulb\n */\nexport interface IEditorLightbulbOptions {\n\t/**\n\t * Enable the lightbulb code action.\n\t * The three possible values are `off`, `on` and `onCode` and the default is `onCode`.\n\t * `off` disables the code action menu.\n\t * `on` shows the code action menu on code and on empty lines.\n\t * `onCode` shows the code action menu on code only.\n\t */\n\tenabled?: ShowLightbulbIconMode;\n}\n\n/**\n * @internal\n */\nexport type EditorLightbulbOptions = Readonly<Required<IEditorLightbulbOptions>>;\n\nclass EditorLightbulb extends BaseEditorOption<EditorOption.lightbulb, IEditorLightbulbOptions, EditorLightbulbOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorLightbulbOptions = { enabled: ShowLightbulbIconMode.OnCode };\n\t\tsuper(\n\t\t\tEditorOption.lightbulb, 'lightbulb', defaults,\n\t\t\t{\n\t\t\t\t'editor.lightbulb.enabled': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: [ShowLightbulbIconMode.Off, ShowLightbulbIconMode.OnCode, ShowLightbulbIconMode.On],\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.lightbulb.enabled.off', 'Disable the code action menu.'),\n\t\t\t\t\t\tnls.localize('editor.lightbulb.enabled.onCode', 'Show the code action menu when the cursor is on lines with code.'),\n\t\t\t\t\t\tnls.localize('editor.lightbulb.enabled.on', 'Show the code action menu when the cursor is on lines with code or on empty lines.'),\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('enabled', \"Enables the Code Action lightbulb in the editor.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorLightbulbOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorLightbulbOptions>;\n\t\treturn {\n\t\t\tenabled: stringSet(input.enabled, this.defaultValue.enabled, [ShowLightbulbIconMode.Off, ShowLightbulbIconMode.OnCode, ShowLightbulbIconMode.On])\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region stickyScroll\n\nexport interface IEditorStickyScrollOptions {\n\t/**\n\t * Enable the sticky scroll\n\t */\n\tenabled?: boolean;\n\t/**\n\t * Maximum number of sticky lines to show\n\t */\n\tmaxLineCount?: number;\n\t/**\n\t * Model to choose for sticky scroll by default\n\t */\n\tdefaultModel?: 'outlineModel' | 'foldingProviderModel' | 'indentationModel';\n\t/**\n\t * Define whether to scroll sticky scroll with editor horizontal scrollbae\n\t */\n\tscrollWithEditor?: boolean;\n}\n\n/**\n * @internal\n */\nexport type EditorStickyScrollOptions = Readonly<Required<IEditorStickyScrollOptions>>;\n\nclass EditorStickyScroll extends BaseEditorOption<EditorOption.stickyScroll, IEditorStickyScrollOptions, EditorStickyScrollOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorStickyScrollOptions = { enabled: true, maxLineCount: 5, defaultModel: 'outlineModel', scrollWithEditor: true };\n\t\tsuper(\n\t\t\tEditorOption.stickyScroll, 'stickyScroll', defaults,\n\t\t\t{\n\t\t\t\t'editor.stickyScroll.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('editor.stickyScroll.enabled', \"Shows the nested current scopes during the scroll at the top of the editor.\")\n\t\t\t\t},\n\t\t\t\t'editor.stickyScroll.maxLineCount': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.maxLineCount,\n\t\t\t\t\tminimum: 1,\n\t\t\t\t\tmaximum: 20,\n\t\t\t\t\tdescription: nls.localize('editor.stickyScroll.maxLineCount', \"Defines the maximum number of sticky lines to show.\")\n\t\t\t\t},\n\t\t\t\t'editor.stickyScroll.defaultModel': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['outlineModel', 'foldingProviderModel', 'indentationModel'],\n\t\t\t\t\tdefault: defaults.defaultModel,\n\t\t\t\t\tdescription: nls.localize('editor.stickyScroll.defaultModel', \"Defines the model to use for determining which lines to stick. If the outline model does not exist, it will fall back on the folding provider model which falls back on the indentation model. This order is respected in all three cases.\")\n\t\t\t\t},\n\t\t\t\t'editor.stickyScroll.scrollWithEditor': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.scrollWithEditor,\n\t\t\t\t\tdescription: nls.localize('editor.stickyScroll.scrollWithEditor', \"Enable scrolling of Sticky Scroll with the editor's horizontal scrollbar.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorStickyScrollOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorStickyScrollOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tmaxLineCount: EditorIntOption.clampedInt(input.maxLineCount, this.defaultValue.maxLineCount, 1, 20),\n\t\t\tdefaultModel: stringSet<'outlineModel' | 'foldingProviderModel' | 'indentationModel'>(input.defaultModel, this.defaultValue.defaultModel, ['outlineModel', 'foldingProviderModel', 'indentationModel']),\n\t\t\tscrollWithEditor: boolean(input.scrollWithEditor, this.defaultValue.scrollWithEditor)\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region inlayHints\n\n/**\n * Configuration options for editor inlayHints\n */\nexport interface IEditorInlayHintsOptions {\n\t/**\n\t * Enable the inline hints.\n\t * Defaults to true.\n\t */\n\tenabled?: 'on' | 'off' | 'offUnlessPressed' | 'onUnlessPressed';\n\n\t/**\n\t * Font size of inline hints.\n\t * Default to 90% of the editor font size.\n\t */\n\tfontSize?: number;\n\n\t/**\n\t * Font family of inline hints.\n\t * Defaults to editor font family.\n\t */\n\tfontFamily?: string;\n\n\t/**\n\t * Enables the padding around the inlay hint.\n\t * Defaults to false.\n\t */\n\tpadding?: boolean;\n\n\t/**\n\t * Maximum length for inlay hints per line\n\t * Set to 0 to have an unlimited length.\n\t */\n\tmaximumLength?: number;\n}\n\n/**\n * @internal\n */\nexport type EditorInlayHintsOptions = Readonly<Required<IEditorInlayHintsOptions>>;\n\nclass EditorInlayHints extends BaseEditorOption<EditorOption.inlayHints, IEditorInlayHintsOptions, EditorInlayHintsOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorInlayHintsOptions = { enabled: 'on', fontSize: 0, fontFamily: '', padding: false, maximumLength: 43 };\n\t\tsuper(\n\t\t\tEditorOption.inlayHints, 'inlayHints', defaults,\n\t\t\t{\n\t\t\t\t'editor.inlayHints.enabled': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('inlayHints.enable', \"Enables the inlay hints in the editor.\"),\n\t\t\t\t\tenum: ['on', 'onUnlessPressed', 'offUnlessPressed', 'off'],\n\t\t\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.inlayHints.on', \"Inlay hints are enabled\"),\n\t\t\t\t\t\tnls.localize('editor.inlayHints.onUnlessPressed', \"Inlay hints are showing by default and hide when holding {0}\", platform.isMacintosh ? `Ctrl+Option` : `Ctrl+Alt`),\n\t\t\t\t\t\tnls.localize('editor.inlayHints.offUnlessPressed', \"Inlay hints are hidden by default and show when holding {0}\", platform.isMacintosh ? `Ctrl+Option` : `Ctrl+Alt`),\n\t\t\t\t\t\tnls.localize('editor.inlayHints.off', \"Inlay hints are disabled\"),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t'editor.inlayHints.fontSize': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.fontSize,\n\t\t\t\t\tmarkdownDescription: nls.localize('inlayHints.fontSize', \"Controls font size of inlay hints in the editor. As default the {0} is used when the configured value is less than {1} or greater than the editor font size.\", '`#editor.fontSize#`', '`5`')\n\t\t\t\t},\n\t\t\t\t'editor.inlayHints.fontFamily': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.fontFamily,\n\t\t\t\t\tmarkdownDescription: nls.localize('inlayHints.fontFamily', \"Controls font family of inlay hints in the editor. When set to empty, the {0} is used.\", '`#editor.fontFamily#`')\n\t\t\t\t},\n\t\t\t\t'editor.inlayHints.padding': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.padding,\n\t\t\t\t\tdescription: nls.localize('inlayHints.padding', \"Enables the padding around the inlay hints in the editor.\")\n\t\t\t\t},\n\t\t\t\t'editor.inlayHints.maximumLength': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.maximumLength,\n\t\t\t\t\tmarkdownDescription: nls.localize('inlayHints.maximumLength', \"Maximum overall length of inlay hints, for a single line, before they get truncated by the editor. Set to `0` to never truncate\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorInlayHintsOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorInlayHintsOptions>;\n\t\tif (typeof input.enabled === 'boolean') {\n\t\t\tinput.enabled = input.enabled ? 'on' : 'off';\n\t\t}\n\t\treturn {\n\t\t\tenabled: stringSet<'on' | 'off' | 'offUnlessPressed' | 'onUnlessPressed'>(input.enabled, this.defaultValue.enabled, ['on', 'off', 'offUnlessPressed', 'onUnlessPressed']),\n\t\t\tfontSize: EditorIntOption.clampedInt(input.fontSize, this.defaultValue.fontSize, 0, 100),\n\t\t\tfontFamily: EditorStringOption.string(input.fontFamily, this.defaultValue.fontFamily),\n\t\t\tpadding: boolean(input.padding, this.defaultValue.padding),\n\t\t\tmaximumLength: EditorIntOption.clampedInt(input.maximumLength, this.defaultValue.maximumLength, 0, Number.MAX_SAFE_INTEGER),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region lineDecorationsWidth\n\nclass EditorLineDecorationsWidth extends BaseEditorOption<EditorOption.lineDecorationsWidth, number | string, number> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.lineDecorationsWidth, 'lineDecorationsWidth', 10);\n\t}\n\n\tpublic validate(input: unknown): number {\n\t\tif (typeof input === 'string' && /^\\d+(\\.\\d+)?ch$/.test(input)) {\n\t\t\tconst multiple = parseFloat(input.substring(0, input.length - 2));\n\t\t\treturn -multiple; // negative numbers signal a multiple\n\t\t} else {\n\t\t\treturn EditorIntOption.clampedInt(input, this.defaultValue, 0, 1000);\n\t\t}\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: number): number {\n\t\tif (value < 0) {\n\t\t\t// negative numbers signal a multiple\n\t\t\treturn EditorIntOption.clampedInt(-value * env.fontInfo.typicalHalfwidthCharacterWidth, this.defaultValue, 0, 1000);\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t}\n}\n\n//#endregion\n\n//#region lineHeight\n\nclass EditorLineHeight extends EditorFloatOption<EditorOption.lineHeight> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.lineHeight, 'lineHeight',\n\t\t\tEDITOR_FONT_DEFAULTS.lineHeight,\n\t\t\tx => EditorFloatOption.clamp(x, 0, 150),\n\t\t\t{ markdownDescription: nls.localize('lineHeight', \"Controls the line height. \\n - Use 0 to automatically compute the line height from the font size.\\n - Values between 0 and 8 will be used as a multiplier with the font size.\\n - Values greater than or equal to 8 will be used as effective values.\") },\n\t\t\t0,\n\t\t\t150\n\t\t);\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: number): number {\n\t\t// The lineHeight is computed from the fontSize if it is 0.\n\t\t// Moreover, the final lineHeight respects the editor zoom level.\n\t\t// So take the result from env.fontInfo\n\t\treturn env.fontInfo.lineHeight;\n\t}\n}\n\n//#endregion\n\n//#region minimap\n\n/**\n * Configuration options for editor minimap\n */\nexport interface IEditorMinimapOptions {\n\t/**\n\t * Enable the rendering of the minimap.\n\t * Defaults to true.\n\t */\n\tenabled?: boolean;\n\t/**\n\t * Control the rendering of minimap.\n\t */\n\tautohide?: 'none' | 'mouseover' | 'scroll';\n\t/**\n\t * Control the side of the minimap in editor.\n\t * Defaults to 'right'.\n\t */\n\tside?: 'right' | 'left';\n\t/**\n\t * Control the minimap rendering mode.\n\t * Defaults to 'actual'.\n\t */\n\tsize?: 'proportional' | 'fill' | 'fit';\n\t/**\n\t * Control the rendering of the minimap slider.\n\t * Defaults to 'mouseover'.\n\t */\n\tshowSlider?: 'always' | 'mouseover';\n\t/**\n\t * Render the actual text on a line (as opposed to color blocks).\n\t * Defaults to true.\n\t */\n\trenderCharacters?: boolean;\n\t/**\n\t * Limit the width of the minimap to render at most a certain number of columns.\n\t * Defaults to 120.\n\t */\n\tmaxColumn?: number;\n\t/**\n\t * Relative size of the font in the minimap. Defaults to 1.\n\t */\n\tscale?: number;\n\t/**\n\t * Whether to show named regions as section headers. Defaults to true.\n\t */\n\tshowRegionSectionHeaders?: boolean;\n\t/**\n\t * Whether to show MARK: comments as section headers. Defaults to true.\n\t */\n\tshowMarkSectionHeaders?: boolean;\n\t/**\n\t * When specified, is used to create a custom section header parser regexp.\n\t * Must contain a match group named 'label' (written as (?<label>.+)) that encapsulates the section header.\n\t * Optionally can include another match group named 'separator'.\n\t * To match multi-line headers like:\n\t * // ==========\n\t * // My Section\n\t * // ==========\n\t * Use a pattern like: ^={3,}\\n^\\/\\/ *(?<label>[^\\n]*?)\\n^={3,}$\n\t */\n\tmarkSectionHeaderRegex?: string;\n\t/**\n\t * Font size of section headers. Defaults to 9.\n\t */\n\tsectionHeaderFontSize?: number;\n\t/**\n\t * Spacing between the section header characters (in CSS px). Defaults to 1.\n\t */\n\tsectionHeaderLetterSpacing?: number;\n}\n\n/**\n * @internal\n */\nexport type EditorMinimapOptions = Readonly<Required<IEditorMinimapOptions>>;\n\nclass EditorMinimap extends BaseEditorOption<EditorOption.minimap, IEditorMinimapOptions, EditorMinimapOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorMinimapOptions = {\n\t\t\tenabled: true,\n\t\t\tsize: 'proportional',\n\t\t\tside: 'right',\n\t\t\tshowSlider: 'mouseover',\n\t\t\tautohide: 'none',\n\t\t\trenderCharacters: true,\n\t\t\tmaxColumn: 120,\n\t\t\tscale: 1,\n\t\t\tshowRegionSectionHeaders: true,\n\t\t\tshowMarkSectionHeaders: true,\n\t\t\tmarkSectionHeaderRegex: '\\\\bMARK:\\\\s*(?<separator>\\-?)\\\\s*(?<label>.*)$',\n\t\t\tsectionHeaderFontSize: 9,\n\t\t\tsectionHeaderLetterSpacing: 1,\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.minimap, 'minimap', defaults,\n\t\t\t{\n\t\t\t\t'editor.minimap.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('minimap.enabled', \"Controls whether the minimap is shown.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.autohide': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['none', 'mouseover', 'scroll'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('minimap.autohide.none', \"The minimap is always shown.\"),\n\t\t\t\t\t\tnls.localize('minimap.autohide.mouseover', \"The minimap is hidden when mouse is not over the minimap and shown when mouse is over the minimap.\"),\n\t\t\t\t\t\tnls.localize('minimap.autohide.scroll', \"The minimap is only shown when the editor is scrolled\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.autohide,\n\t\t\t\t\tdescription: nls.localize('minimap.autohide', \"Controls whether the minimap is hidden automatically.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.size': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['proportional', 'fill', 'fit'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('minimap.size.proportional', \"The minimap has the same size as the editor contents (and might scroll).\"),\n\t\t\t\t\t\tnls.localize('minimap.size.fill', \"The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling).\"),\n\t\t\t\t\t\tnls.localize('minimap.size.fit', \"The minimap will shrink as necessary to never be larger than the editor (no scrolling).\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.size,\n\t\t\t\t\tdescription: nls.localize('minimap.size', \"Controls the size of the minimap.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.side': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['left', 'right'],\n\t\t\t\t\tdefault: defaults.side,\n\t\t\t\t\tdescription: nls.localize('minimap.side', \"Controls the side where to render the minimap.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.showSlider': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['always', 'mouseover'],\n\t\t\t\t\tdefault: defaults.showSlider,\n\t\t\t\t\tdescription: nls.localize('minimap.showSlider', \"Controls when the minimap slider is shown.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.scale': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.scale,\n\t\t\t\t\tminimum: 1,\n\t\t\t\t\tmaximum: 3,\n\t\t\t\t\tenum: [1, 2, 3],\n\t\t\t\t\tdescription: nls.localize('minimap.scale', \"Scale of content drawn in the minimap: 1, 2 or 3.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.renderCharacters': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.renderCharacters,\n\t\t\t\t\tdescription: nls.localize('minimap.renderCharacters', \"Render the actual characters on a line as opposed to color blocks.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.maxColumn': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.maxColumn,\n\t\t\t\t\tdescription: nls.localize('minimap.maxColumn', \"Limit the width of the minimap to render at most a certain number of columns.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.showRegionSectionHeaders': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.showRegionSectionHeaders,\n\t\t\t\t\tdescription: nls.localize('minimap.showRegionSectionHeaders', \"Controls whether named regions are shown as section headers in the minimap.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.showMarkSectionHeaders': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.showMarkSectionHeaders,\n\t\t\t\t\tdescription: nls.localize('minimap.showMarkSectionHeaders', \"Controls whether MARK: comments are shown as section headers in the minimap.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.markSectionHeaderRegex': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.markSectionHeaderRegex,\n\t\t\t\t\tdescription: nls.localize('minimap.markSectionHeaderRegex', \"Defines the regular expression used to find section headers in comments. The regex must contain a named match group `label` (written as `(?<label>.+)`) that encapsulates the section header, otherwise it will not work. Optionally you can include another match group named `separator`. Use \\\\n in the pattern to match multi-line headers.\"),\n\t\t\t\t},\n\t\t\t\t'editor.minimap.sectionHeaderFontSize': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.sectionHeaderFontSize,\n\t\t\t\t\tdescription: nls.localize('minimap.sectionHeaderFontSize', \"Controls the font size of section headers in the minimap.\")\n\t\t\t\t},\n\t\t\t\t'editor.minimap.sectionHeaderLetterSpacing': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.sectionHeaderLetterSpacing,\n\t\t\t\t\tdescription: nls.localize('minimap.sectionHeaderLetterSpacing', \"Controls the amount of space (in pixels) between characters of section header. This helps the readability of the header in small font sizes.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorMinimapOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorMinimapOptions>;\n\n\t\t// Validate mark section header regex\n\t\tlet markSectionHeaderRegex = this.defaultValue.markSectionHeaderRegex;\n\t\tconst inputRegex = input.markSectionHeaderRegex;\n\t\tif (typeof inputRegex === 'string') {\n\t\t\ttry {\n\t\t\t\tnew RegExp(inputRegex, 'd');\n\t\t\t\tmarkSectionHeaderRegex = inputRegex;\n\t\t\t} catch { }\n\t\t}\n\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tautohide: stringSet<'none' | 'mouseover' | 'scroll'>(input.autohide, this.defaultValue.autohide, ['none', 'mouseover', 'scroll']),\n\t\t\tsize: stringSet<'proportional' | 'fill' | 'fit'>(input.size, this.defaultValue.size, ['proportional', 'fill', 'fit']),\n\t\t\tside: stringSet<'right' | 'left'>(input.side, this.defaultValue.side, ['right', 'left']),\n\t\t\tshowSlider: stringSet<'always' | 'mouseover'>(input.showSlider, this.defaultValue.showSlider, ['always', 'mouseover']),\n\t\t\trenderCharacters: boolean(input.renderCharacters, this.defaultValue.renderCharacters),\n\t\t\tscale: EditorIntOption.clampedInt(input.scale, 1, 1, 3),\n\t\t\tmaxColumn: EditorIntOption.clampedInt(input.maxColumn, this.defaultValue.maxColumn, 1, 10000),\n\t\t\tshowRegionSectionHeaders: boolean(input.showRegionSectionHeaders, this.defaultValue.showRegionSectionHeaders),\n\t\t\tshowMarkSectionHeaders: boolean(input.showMarkSectionHeaders, this.defaultValue.showMarkSectionHeaders),\n\t\t\tmarkSectionHeaderRegex: markSectionHeaderRegex,\n\t\t\tsectionHeaderFontSize: EditorFloatOption.clamp(EditorFloatOption.float(input.sectionHeaderFontSize, this.defaultValue.sectionHeaderFontSize), 4, 32),\n\t\t\tsectionHeaderLetterSpacing: EditorFloatOption.clamp(EditorFloatOption.float(input.sectionHeaderLetterSpacing, this.defaultValue.sectionHeaderLetterSpacing), 0, 5),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region multiCursorModifier\n\nfunction _multiCursorModifierFromString(multiCursorModifier: 'ctrlCmd' | 'alt'): 'altKey' | 'metaKey' | 'ctrlKey' {\n\tif (multiCursorModifier === 'ctrlCmd') {\n\t\treturn (platform.isMacintosh ? 'metaKey' : 'ctrlKey');\n\t}\n\treturn 'altKey';\n}\n\n//#endregion\n\n//#region padding\n\n/**\n * Configuration options for editor padding\n */\nexport interface IEditorPaddingOptions {\n\t/**\n\t * Spacing between top edge of editor and first line.\n\t */\n\ttop?: number;\n\t/**\n\t * Spacing between bottom edge of editor and last line.\n\t */\n\tbottom?: number;\n}\n\n/**\n * @internal\n */\nexport type InternalEditorPaddingOptions = Readonly<Required<IEditorPaddingOptions>>;\n\nclass EditorPadding extends BaseEditorOption<EditorOption.padding, IEditorPaddingOptions, InternalEditorPaddingOptions> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.padding, 'padding', { top: 0, bottom: 0 },\n\t\t\t{\n\t\t\t\t'editor.padding.top': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: 0,\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tmaximum: 1000,\n\t\t\t\t\tdescription: nls.localize('padding.top', \"Controls the amount of space between the top edge of the editor and the first line.\")\n\t\t\t\t},\n\t\t\t\t'editor.padding.bottom': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: 0,\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tmaximum: 1000,\n\t\t\t\t\tdescription: nls.localize('padding.bottom', \"Controls the amount of space between the bottom edge of the editor and the last line.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalEditorPaddingOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorPaddingOptions>;\n\n\t\treturn {\n\t\t\ttop: EditorIntOption.clampedInt(input.top, 0, 0, 1000),\n\t\t\tbottom: EditorIntOption.clampedInt(input.bottom, 0, 0, 1000)\n\t\t};\n\t}\n}\n//#endregion\n\n//#region parameterHints\n\n/**\n * Configuration options for parameter hints\n */\nexport interface IEditorParameterHintOptions {\n\t/**\n\t * Enable parameter hints.\n\t * Defaults to true.\n\t */\n\tenabled?: boolean;\n\t/**\n\t * Enable cycling of parameter hints.\n\t * Defaults to false.\n\t */\n\tcycle?: boolean;\n}\n\n/**\n * @internal\n */\nexport type InternalParameterHintOptions = Readonly<Required<IEditorParameterHintOptions>>;\n\nclass EditorParameterHints extends BaseEditorOption<EditorOption.parameterHints, IEditorParameterHintOptions, InternalParameterHintOptions> {\n\n\tconstructor() {\n\t\tconst defaults: InternalParameterHintOptions = {\n\t\t\tenabled: true,\n\t\t\tcycle: true\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.parameterHints, 'parameterHints', defaults,\n\t\t\t{\n\t\t\t\t'editor.parameterHints.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('parameterHints.enabled', \"Enables a pop-up that shows parameter documentation and type information as you type.\")\n\t\t\t\t},\n\t\t\t\t'editor.parameterHints.cycle': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.cycle,\n\t\t\t\t\tdescription: nls.localize('parameterHints.cycle', \"Controls whether the parameter hints menu cycles or closes when reaching the end of the list.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalParameterHintOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorParameterHintOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tcycle: boolean(input.cycle, this.defaultValue.cycle)\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region pixelRatio\n\nclass EditorPixelRatio extends ComputedEditorOption<EditorOption.pixelRatio, number> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.pixelRatio, 1);\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: number): number {\n\t\treturn env.pixelRatio;\n\t}\n}\n\n//#endregion\n\n//#region\n\nclass PlaceholderOption extends BaseEditorOption<EditorOption.placeholder, string | undefined, string | undefined> {\n\tconstructor() {\n\t\tsuper(EditorOption.placeholder, 'placeholder', undefined);\n\t}\n\n\tpublic validate(input: unknown): string | undefined {\n\t\tif (typeof input === 'undefined') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tif (typeof input === 'string') {\n\t\t\treturn input;\n\t\t}\n\t\treturn this.defaultValue;\n\t}\n}\n//#endregion\n\n//#region quickSuggestions\n\nexport type QuickSuggestionsValue = 'on' | 'inline' | 'off';\n\n/**\n * Configuration options for quick suggestions\n */\nexport interface IQuickSuggestionsOptions {\n\tother?: boolean | QuickSuggestionsValue;\n\tcomments?: boolean | QuickSuggestionsValue;\n\tstrings?: boolean | QuickSuggestionsValue;\n}\n\nexport interface InternalQuickSuggestionsOptions {\n\treadonly other: QuickSuggestionsValue;\n\treadonly comments: QuickSuggestionsValue;\n\treadonly strings: QuickSuggestionsValue;\n}\n\nclass EditorQuickSuggestions extends BaseEditorOption<EditorOption.quickSuggestions, boolean | IQuickSuggestionsOptions, InternalQuickSuggestionsOptions> {\n\n\tpublic override readonly defaultValue: InternalQuickSuggestionsOptions;\n\n\tconstructor() {\n\t\tconst defaults: InternalQuickSuggestionsOptions = {\n\t\t\tother: 'on',\n\t\t\tcomments: 'off',\n\t\t\tstrings: 'off'\n\t\t};\n\t\tconst types: IJSONSchema[] = [\n\t\t\t{ type: 'boolean' },\n\t\t\t{\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['on', 'inline', 'off'],\n\t\t\t\tenumDescriptions: [nls.localize('on', \"Quick suggestions show inside the suggest widget\"), nls.localize('inline', \"Quick suggestions show as ghost text\"), nls.localize('off', \"Quick suggestions are disabled\")]\n\t\t\t}\n\t\t];\n\t\tsuper(EditorOption.quickSuggestions, 'quickSuggestions', defaults, {\n\t\t\ttype: 'object',\n\t\t\tadditionalProperties: false,\n\t\t\tproperties: {\n\t\t\t\tstrings: {\n\t\t\t\t\tanyOf: types,\n\t\t\t\t\tdefault: defaults.strings,\n\t\t\t\t\tdescription: nls.localize('quickSuggestions.strings', \"Enable quick suggestions inside strings.\")\n\t\t\t\t},\n\t\t\t\tcomments: {\n\t\t\t\t\tanyOf: types,\n\t\t\t\t\tdefault: defaults.comments,\n\t\t\t\t\tdescription: nls.localize('quickSuggestions.comments', \"Enable quick suggestions inside comments.\")\n\t\t\t\t},\n\t\t\t\tother: {\n\t\t\t\t\tanyOf: types,\n\t\t\t\t\tdefault: defaults.other,\n\t\t\t\t\tdescription: nls.localize('quickSuggestions.other', \"Enable quick suggestions outside of strings and comments.\")\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: defaults,\n\t\t\tmarkdownDescription: nls.localize('quickSuggestions', \"Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget. Also be aware of the {0}-setting which controls if suggestions are triggered by special characters.\", '`#editor.suggestOnTriggerCharacters#`')\n\t\t});\n\t\tthis.defaultValue = defaults;\n\t}\n\n\tpublic validate(input: unknown): InternalQuickSuggestionsOptions {\n\t\tif (typeof input === 'boolean') {\n\t\t\t// boolean -> all on/off\n\t\t\tconst value = input ? 'on' : 'off';\n\t\t\treturn { comments: value, strings: value, other: value };\n\t\t}\n\t\tif (!input || typeof input !== 'object') {\n\t\t\t// invalid object\n\t\t\treturn this.defaultValue;\n\t\t}\n\n\t\tconst { other, comments, strings } = (<IQuickSuggestionsOptions>input);\n\t\tconst allowedValues: QuickSuggestionsValue[] = ['on', 'inline', 'off'];\n\t\tlet validatedOther: QuickSuggestionsValue;\n\t\tlet validatedComments: QuickSuggestionsValue;\n\t\tlet validatedStrings: QuickSuggestionsValue;\n\n\t\tif (typeof other === 'boolean') {\n\t\t\tvalidatedOther = other ? 'on' : 'off';\n\t\t} else {\n\t\t\tvalidatedOther = stringSet(other, this.defaultValue.other, allowedValues);\n\t\t}\n\t\tif (typeof comments === 'boolean') {\n\t\t\tvalidatedComments = comments ? 'on' : 'off';\n\t\t} else {\n\t\t\tvalidatedComments = stringSet(comments, this.defaultValue.comments, allowedValues);\n\t\t}\n\t\tif (typeof strings === 'boolean') {\n\t\t\tvalidatedStrings = strings ? 'on' : 'off';\n\t\t} else {\n\t\t\tvalidatedStrings = stringSet(strings, this.defaultValue.strings, allowedValues);\n\t\t}\n\t\treturn {\n\t\t\tother: validatedOther,\n\t\t\tcomments: validatedComments,\n\t\t\tstrings: validatedStrings\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region renderLineNumbers\n\nexport type LineNumbersType = 'on' | 'off' | 'relative' | 'interval' | ((lineNumber: number) => string);\n\nexport const enum RenderLineNumbersType {\n\tOff = 0,\n\tOn = 1,\n\tRelative = 2,\n\tInterval = 3,\n\tCustom = 4\n}\n\nexport interface InternalEditorRenderLineNumbersOptions {\n\treadonly renderType: RenderLineNumbersType;\n\treadonly renderFn: ((lineNumber: number) => string) | null;\n}\n\nclass EditorRenderLineNumbersOption extends BaseEditorOption<EditorOption.lineNumbers, LineNumbersType, InternalEditorRenderLineNumbersOptions> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.lineNumbers, 'lineNumbers', { renderType: RenderLineNumbersType.On, renderFn: null },\n\t\t\t{\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['off', 'on', 'relative', 'interval'],\n\t\t\t\tenumDescriptions: [\n\t\t\t\t\tnls.localize('lineNumbers.off', \"Line numbers are not rendered.\"),\n\t\t\t\t\tnls.localize('lineNumbers.on', \"Line numbers are rendered as absolute number.\"),\n\t\t\t\t\tnls.localize('lineNumbers.relative', \"Line numbers are rendered as distance in lines to cursor position.\"),\n\t\t\t\t\tnls.localize('lineNumbers.interval', \"Line numbers are rendered every 10 lines.\")\n\t\t\t\t],\n\t\t\t\tdefault: 'on',\n\t\t\t\tdescription: nls.localize('lineNumbers', \"Controls the display of line numbers.\")\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(lineNumbers: unknown): InternalEditorRenderLineNumbersOptions {\n\t\tlet renderType: RenderLineNumbersType = this.defaultValue.renderType;\n\t\tlet renderFn: ((lineNumber: number) => string) | null = this.defaultValue.renderFn;\n\n\t\tif (typeof lineNumbers !== 'undefined') {\n\t\t\tif (typeof lineNumbers === 'function') {\n\t\t\t\trenderType = RenderLineNumbersType.Custom;\n\t\t\t\trenderFn = lineNumbers as ((lineNumber: number) => string);\n\t\t\t} else if (lineNumbers === 'interval') {\n\t\t\t\trenderType = RenderLineNumbersType.Interval;\n\t\t\t} else if (lineNumbers === 'relative') {\n\t\t\t\trenderType = RenderLineNumbersType.Relative;\n\t\t\t} else if (lineNumbers === 'on') {\n\t\t\t\trenderType = RenderLineNumbersType.On;\n\t\t\t} else {\n\t\t\t\trenderType = RenderLineNumbersType.Off;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\trenderType,\n\t\t\trenderFn\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region renderValidationDecorations\n\n/**\n * @internal\n */\nexport function filterValidationDecorations(options: IComputedEditorOptions): boolean {\n\tconst renderValidationDecorations = options.get(EditorOption.renderValidationDecorations);\n\tif (renderValidationDecorations === 'editable') {\n\t\treturn options.get(EditorOption.readOnly);\n\t}\n\treturn renderValidationDecorations === 'on' ? false : true;\n}\n\n//#endregion\n\n//#region filterFontDecorations\n\n/**\n * @internal\n */\nexport function filterFontDecorations(options: IComputedEditorOptions): boolean {\n\treturn !options.get(EditorOption.effectiveAllowVariableFonts);\n}\n\n//#endregion\n\n//#region rulers\n\nexport interface IRulerOption {\n\treadonly column: number;\n\treadonly color: string | null;\n}\n\nclass EditorRulers extends BaseEditorOption<EditorOption.rulers, (number | IRulerOption)[], IRulerOption[]> {\n\n\tconstructor() {\n\t\tconst defaults: IRulerOption[] = [];\n\t\tconst columnSchema: IJSONSchema = { type: 'number', description: nls.localize('rulers.size', \"Number of monospace characters at which this editor ruler will render.\") };\n\t\tsuper(\n\t\t\tEditorOption.rulers, 'rulers', defaults,\n\t\t\t{\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\tcolumnSchema,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: [\n\t\t\t\t\t\t\t\t'object'\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tcolumn: columnSchema,\n\t\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\tdescription: nls.localize('rulers.color', \"Color of this editor ruler.\"),\n\t\t\t\t\t\t\t\t\tformat: 'color-hex'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\tdefault: defaults,\n\t\t\t\tdescription: nls.localize('rulers', \"Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.\")\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): IRulerOption[] {\n\t\tif (Array.isArray(input)) {\n\t\t\tconst rulers: IRulerOption[] = [];\n\t\t\tfor (const _element of input) {\n\t\t\t\tif (typeof _element === 'number') {\n\t\t\t\t\trulers.push({\n\t\t\t\t\t\tcolumn: EditorIntOption.clampedInt(_element, 0, 0, 10000),\n\t\t\t\t\t\tcolor: null\n\t\t\t\t\t});\n\t\t\t\t} else if (_element && typeof _element === 'object') {\n\t\t\t\t\tconst element = _element as IRulerOption;\n\t\t\t\t\trulers.push({\n\t\t\t\t\t\tcolumn: EditorIntOption.clampedInt(element.column, 0, 0, 10000),\n\t\t\t\t\t\tcolor: element.color\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\trulers.sort((a, b) => a.column - b.column);\n\t\t\treturn rulers;\n\t\t}\n\t\treturn this.defaultValue;\n\t}\n}\n\n//#endregion\n\n//#region readonly\n\n/**\n * Configuration options for readonly message\n */\nclass ReadonlyMessage extends BaseEditorOption<EditorOption.readOnlyMessage, IMarkdownString | undefined, IMarkdownString | undefined> {\n\tconstructor() {\n\t\tconst defaults = undefined;\n\n\t\tsuper(\n\t\t\tEditorOption.readOnlyMessage, 'readOnlyMessage', defaults\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): IMarkdownString | undefined {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\treturn _input as IMarkdownString;\n\t}\n}\n\n//#endregion\n\n//#region scrollbar\n\n/**\n * Configuration options for editor scrollbars\n */\nexport interface IEditorScrollbarOptions {\n\t/**\n\t * The size of arrows (if displayed).\n\t * Defaults to 11.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\tarrowSize?: number;\n\t/**\n\t * Render vertical scrollbar.\n\t * Defaults to 'auto'.\n\t */\n\tvertical?: 'auto' | 'visible' | 'hidden';\n\t/**\n\t * Render horizontal scrollbar.\n\t * Defaults to 'auto'.\n\t */\n\thorizontal?: 'auto' | 'visible' | 'hidden';\n\t/**\n\t * Cast horizontal and vertical shadows when the content is scrolled.\n\t * Defaults to true.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\tuseShadows?: boolean;\n\t/**\n\t * Render arrows at the top and bottom of the vertical scrollbar.\n\t * Defaults to false.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\tverticalHasArrows?: boolean;\n\t/**\n\t * Render arrows at the left and right of the horizontal scrollbar.\n\t * Defaults to false.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\thorizontalHasArrows?: boolean;\n\t/**\n\t * Listen to mouse wheel events and react to them by scrolling.\n\t * Defaults to true.\n\t */\n\thandleMouseWheel?: boolean;\n\t/**\n\t * Always consume mouse wheel events (always call preventDefault() and stopPropagation() on the browser events).\n\t * Defaults to true.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\talwaysConsumeMouseWheel?: boolean;\n\t/**\n\t * Height in pixels for the horizontal scrollbar.\n\t * Defaults to 12 (px).\n\t */\n\thorizontalScrollbarSize?: number;\n\t/**\n\t * Width in pixels for the vertical scrollbar.\n\t * Defaults to 14 (px).\n\t */\n\tverticalScrollbarSize?: number;\n\t/**\n\t * Width in pixels for the vertical slider.\n\t * Defaults to `verticalScrollbarSize`.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\tverticalSliderSize?: number;\n\t/**\n\t * Height in pixels for the horizontal slider.\n\t * Defaults to `horizontalScrollbarSize`.\n\t * **NOTE**: This option cannot be updated using `updateOptions()`\n\t */\n\thorizontalSliderSize?: number;\n\t/**\n\t * Scroll gutter clicks move by page vs jump to position.\n\t * Defaults to false.\n\t */\n\tscrollByPage?: boolean;\n\n\t/**\n\t * When set, the horizontal scrollbar will not increase content height.\n\t * Defaults to false.\n\t */\n\tignoreHorizontalScrollbarInContentHeight?: boolean;\n}\n\nexport interface InternalEditorScrollbarOptions {\n\treadonly arrowSize: number;\n\treadonly vertical: ScrollbarVisibility;\n\treadonly horizontal: ScrollbarVisibility;\n\treadonly useShadows: boolean;\n\treadonly verticalHasArrows: boolean;\n\treadonly horizontalHasArrows: boolean;\n\treadonly handleMouseWheel: boolean;\n\treadonly alwaysConsumeMouseWheel: boolean;\n\treadonly horizontalScrollbarSize: number;\n\treadonly horizontalSliderSize: number;\n\treadonly verticalScrollbarSize: number;\n\treadonly verticalSliderSize: number;\n\treadonly scrollByPage: boolean;\n\treadonly ignoreHorizontalScrollbarInContentHeight: boolean;\n}\n\nfunction _scrollbarVisibilityFromString(visibility: unknown, defaultValue: ScrollbarVisibility): ScrollbarVisibility {\n\tif (typeof visibility !== 'string') {\n\t\treturn defaultValue;\n\t}\n\tswitch (visibility) {\n\t\tcase 'hidden': return ScrollbarVisibility.Hidden;\n\t\tcase 'visible': return ScrollbarVisibility.Visible;\n\t\tdefault: return ScrollbarVisibility.Auto;\n\t}\n}\n\nclass EditorScrollbar extends BaseEditorOption<EditorOption.scrollbar, IEditorScrollbarOptions, InternalEditorScrollbarOptions> {\n\n\tconstructor() {\n\t\tconst defaults: InternalEditorScrollbarOptions = {\n\t\t\tvertical: ScrollbarVisibility.Auto,\n\t\t\thorizontal: ScrollbarVisibility.Auto,\n\t\t\tarrowSize: 11,\n\t\t\tuseShadows: true,\n\t\t\tverticalHasArrows: false,\n\t\t\thorizontalHasArrows: false,\n\t\t\thorizontalScrollbarSize: 12,\n\t\t\thorizontalSliderSize: 12,\n\t\t\tverticalScrollbarSize: 14,\n\t\t\tverticalSliderSize: 14,\n\t\t\thandleMouseWheel: true,\n\t\t\talwaysConsumeMouseWheel: true,\n\t\t\tscrollByPage: false,\n\t\t\tignoreHorizontalScrollbarInContentHeight: false,\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.scrollbar, 'scrollbar', defaults,\n\t\t\t{\n\t\t\t\t'editor.scrollbar.vertical': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['auto', 'visible', 'hidden'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('scrollbar.vertical.auto', \"The vertical scrollbar will be visible only when necessary.\"),\n\t\t\t\t\t\tnls.localize('scrollbar.vertical.visible', \"The vertical scrollbar will always be visible.\"),\n\t\t\t\t\t\tnls.localize('scrollbar.vertical.fit', \"The vertical scrollbar will always be hidden.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: 'auto',\n\t\t\t\t\tdescription: nls.localize('scrollbar.vertical', \"Controls the visibility of the vertical scrollbar.\")\n\t\t\t\t},\n\t\t\t\t'editor.scrollbar.horizontal': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['auto', 'visible', 'hidden'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('scrollbar.horizontal.auto', \"The horizontal scrollbar will be visible only when necessary.\"),\n\t\t\t\t\t\tnls.localize('scrollbar.horizontal.visible', \"The horizontal scrollbar will always be visible.\"),\n\t\t\t\t\t\tnls.localize('scrollbar.horizontal.fit', \"The horizontal scrollbar will always be hidden.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: 'auto',\n\t\t\t\t\tdescription: nls.localize('scrollbar.horizontal', \"Controls the visibility of the horizontal scrollbar.\")\n\t\t\t\t},\n\t\t\t\t'editor.scrollbar.verticalScrollbarSize': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.verticalScrollbarSize,\n\t\t\t\t\tdescription: nls.localize('scrollbar.verticalScrollbarSize', \"The width of the vertical scrollbar.\")\n\t\t\t\t},\n\t\t\t\t'editor.scrollbar.horizontalScrollbarSize': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: defaults.horizontalScrollbarSize,\n\t\t\t\t\tdescription: nls.localize('scrollbar.horizontalScrollbarSize', \"The height of the horizontal scrollbar.\")\n\t\t\t\t},\n\t\t\t\t'editor.scrollbar.scrollByPage': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.scrollByPage,\n\t\t\t\t\tdescription: nls.localize('scrollbar.scrollByPage', \"Controls whether clicks scroll by page or jump to click position.\")\n\t\t\t\t},\n\t\t\t\t'editor.scrollbar.ignoreHorizontalScrollbarInContentHeight': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.ignoreHorizontalScrollbarInContentHeight,\n\t\t\t\t\tdescription: nls.localize('scrollbar.ignoreHorizontalScrollbarInContentHeight', \"When set, the horizontal scrollbar will not increase the size of the editor's content.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalEditorScrollbarOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IEditorScrollbarOptions>;\n\t\tconst horizontalScrollbarSize = EditorIntOption.clampedInt(input.horizontalScrollbarSize, this.defaultValue.horizontalScrollbarSize, 0, 1000);\n\t\tconst verticalScrollbarSize = EditorIntOption.clampedInt(input.verticalScrollbarSize, this.defaultValue.verticalScrollbarSize, 0, 1000);\n\t\treturn {\n\t\t\tarrowSize: EditorIntOption.clampedInt(input.arrowSize, this.defaultValue.arrowSize, 0, 1000),\n\t\t\tvertical: _scrollbarVisibilityFromString(input.vertical, this.defaultValue.vertical),\n\t\t\thorizontal: _scrollbarVisibilityFromString(input.horizontal, this.defaultValue.horizontal),\n\t\t\tuseShadows: boolean(input.useShadows, this.defaultValue.useShadows),\n\t\t\tverticalHasArrows: boolean(input.verticalHasArrows, this.defaultValue.verticalHasArrows),\n\t\t\thorizontalHasArrows: boolean(input.horizontalHasArrows, this.defaultValue.horizontalHasArrows),\n\t\t\thandleMouseWheel: boolean(input.handleMouseWheel, this.defaultValue.handleMouseWheel),\n\t\t\talwaysConsumeMouseWheel: boolean(input.alwaysConsumeMouseWheel, this.defaultValue.alwaysConsumeMouseWheel),\n\t\t\thorizontalScrollbarSize: horizontalScrollbarSize,\n\t\t\thorizontalSliderSize: EditorIntOption.clampedInt(input.horizontalSliderSize, horizontalScrollbarSize, 0, 1000),\n\t\t\tverticalScrollbarSize: verticalScrollbarSize,\n\t\t\tverticalSliderSize: EditorIntOption.clampedInt(input.verticalSliderSize, verticalScrollbarSize, 0, 1000),\n\t\t\tscrollByPage: boolean(input.scrollByPage, this.defaultValue.scrollByPage),\n\t\t\tignoreHorizontalScrollbarInContentHeight: boolean(input.ignoreHorizontalScrollbarInContentHeight, this.defaultValue.ignoreHorizontalScrollbarInContentHeight),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region UnicodeHighlight\n\nexport type InUntrustedWorkspace = 'inUntrustedWorkspace';\n\n/**\n * @internal\n*/\nexport const inUntrustedWorkspace: InUntrustedWorkspace = 'inUntrustedWorkspace';\n\n/**\n * Configuration options for unicode highlighting.\n */\nexport interface IUnicodeHighlightOptions {\n\n\t/**\n\t * Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.\n\t */\n\tnonBasicASCII?: boolean | InUntrustedWorkspace;\n\n\t/**\n\t * Controls whether characters that just reserve space or have no width at all are highlighted.\n\t */\n\tinvisibleCharacters?: boolean;\n\n\t/**\n\t * Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.\n\t */\n\tambiguousCharacters?: boolean;\n\n\t/**\n\t * Controls whether characters in comments should also be subject to unicode highlighting.\n\t */\n\tincludeComments?: boolean | InUntrustedWorkspace;\n\n\t/**\n\t * Controls whether characters in strings should also be subject to unicode highlighting.\n\t */\n\tincludeStrings?: boolean | InUntrustedWorkspace;\n\n\t/**\n\t * Defines allowed characters that are not being highlighted.\n\t */\n\tallowedCharacters?: Record<string, true>;\n\n\t/**\n\t * Unicode characters that are common in allowed locales are not being highlighted.\n\t */\n\tallowedLocales?: Record<string | '_os' | '_vscode', true>;\n}\n\n/**\n * @internal\n */\nexport type InternalUnicodeHighlightOptions = Required<Readonly<IUnicodeHighlightOptions>>;\n\n/**\n * @internal\n */\nexport const unicodeHighlightConfigKeys = {\n\tallowedCharacters: 'editor.unicodeHighlight.allowedCharacters',\n\tinvisibleCharacters: 'editor.unicodeHighlight.invisibleCharacters',\n\tnonBasicASCII: 'editor.unicodeHighlight.nonBasicASCII',\n\tambiguousCharacters: 'editor.unicodeHighlight.ambiguousCharacters',\n\tincludeComments: 'editor.unicodeHighlight.includeComments',\n\tincludeStrings: 'editor.unicodeHighlight.includeStrings',\n\tallowedLocales: 'editor.unicodeHighlight.allowedLocales',\n};\n\nclass UnicodeHighlight extends BaseEditorOption<EditorOption.unicodeHighlighting, IUnicodeHighlightOptions, InternalUnicodeHighlightOptions> {\n\tconstructor() {\n\t\tconst defaults: InternalUnicodeHighlightOptions = {\n\t\t\tnonBasicASCII: inUntrustedWorkspace,\n\t\t\tinvisibleCharacters: true,\n\t\t\tambiguousCharacters: true,\n\t\t\tincludeComments: inUntrustedWorkspace,\n\t\t\tincludeStrings: true,\n\t\t\tallowedCharacters: {},\n\t\t\tallowedLocales: { _os: true, _vscode: true },\n\t\t};\n\n\t\tsuper(\n\t\t\tEditorOption.unicodeHighlighting, 'unicodeHighlight', defaults,\n\t\t\t{\n\t\t\t\t[unicodeHighlightConfigKeys.nonBasicASCII]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, false, inUntrustedWorkspace],\n\t\t\t\t\tdefault: defaults.nonBasicASCII,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.nonBasicASCII', \"Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.\")\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.invisibleCharacters]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.invisibleCharacters,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.invisibleCharacters', \"Controls whether characters that just reserve space or have no width at all are highlighted.\")\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.ambiguousCharacters]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.ambiguousCharacters,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.ambiguousCharacters', \"Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.\")\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.includeComments]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, false, inUntrustedWorkspace],\n\t\t\t\t\tdefault: defaults.includeComments,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.includeComments', \"Controls whether characters in comments should also be subject to Unicode highlighting.\")\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.includeStrings]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, false, inUntrustedWorkspace],\n\t\t\t\t\tdefault: defaults.includeStrings,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.includeStrings', \"Controls whether characters in strings should also be subject to Unicode highlighting.\")\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.allowedCharacters]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tdefault: defaults.allowedCharacters,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.allowedCharacters', \"Defines allowed characters that are not being highlighted.\"),\n\t\t\t\t\tadditionalProperties: {\n\t\t\t\t\t\ttype: 'boolean'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t[unicodeHighlightConfigKeys.allowedLocales]: {\n\t\t\t\t\trestricted: true,\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tadditionalProperties: {\n\t\t\t\t\t\ttype: 'boolean'\n\t\t\t\t\t},\n\t\t\t\t\tdefault: defaults.allowedLocales,\n\t\t\t\t\tdescription: nls.localize('unicodeHighlight.allowedLocales', \"Unicode characters that are common in allowed locales are not being highlighted.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic override applyUpdate(value: Required<Readonly<IUnicodeHighlightOptions>> | undefined, update: Required<Readonly<IUnicodeHighlightOptions>>): ApplyUpdateResult<Required<Readonly<IUnicodeHighlightOptions>>> {\n\t\tlet didChange = false;\n\t\tif (update.allowedCharacters && value) {\n\t\t\t// Treat allowedCharacters atomically\n\t\t\tif (!objects.equals(value.allowedCharacters, update.allowedCharacters)) {\n\t\t\t\tvalue = { ...value, allowedCharacters: update.allowedCharacters };\n\t\t\t\tdidChange = true;\n\t\t\t}\n\t\t}\n\t\tif (update.allowedLocales && value) {\n\t\t\t// Treat allowedLocales atomically\n\t\t\tif (!objects.equals(value.allowedLocales, update.allowedLocales)) {\n\t\t\t\tvalue = { ...value, allowedLocales: update.allowedLocales };\n\t\t\t\tdidChange = true;\n\t\t\t}\n\t\t}\n\n\t\tconst result = super.applyUpdate(value, update);\n\t\tif (didChange) {\n\t\t\treturn new ApplyUpdateResult(result.newValue, true);\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic validate(_input: unknown): InternalUnicodeHighlightOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IUnicodeHighlightOptions>;\n\t\treturn {\n\t\t\tnonBasicASCII: primitiveSet<boolean | InUntrustedWorkspace>(input.nonBasicASCII, inUntrustedWorkspace, [true, false, inUntrustedWorkspace]),\n\t\t\tinvisibleCharacters: boolean(input.invisibleCharacters, this.defaultValue.invisibleCharacters),\n\t\t\tambiguousCharacters: boolean(input.ambiguousCharacters, this.defaultValue.ambiguousCharacters),\n\t\t\tincludeComments: primitiveSet<boolean | InUntrustedWorkspace>(input.includeComments, inUntrustedWorkspace, [true, false, inUntrustedWorkspace]),\n\t\t\tincludeStrings: primitiveSet<boolean | InUntrustedWorkspace>(input.includeStrings, inUntrustedWorkspace, [true, false, inUntrustedWorkspace]),\n\t\t\tallowedCharacters: this.validateBooleanMap(input.allowedCharacters, this.defaultValue.allowedCharacters),\n\t\t\tallowedLocales: this.validateBooleanMap(input.allowedLocales, this.defaultValue.allowedLocales),\n\t\t};\n\t}\n\n\tprivate validateBooleanMap(map: unknown, defaultValue: Record<string, true>): Record<string, true> {\n\t\tif ((typeof map !== 'object') || !map) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\tconst result: Record<string, true> = {};\n\t\tfor (const [key, value] of Object.entries(map)) {\n\t\t\tif (value === true) {\n\t\t\t\tresult[key] = true;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}\n\n//#endregion\n\n//#region inlineSuggest\n\nexport interface IInlineSuggestOptions {\n\t/**\n\t * Enable or disable the rendering of automatic inline completions.\n\t*/\n\tenabled?: boolean;\n\n\t/**\n\t * Configures the mode.\n\t * Use `prefix` to only show ghost text if the text to replace is a prefix of the suggestion text.\n\t * Use `subword` to only show ghost text if the replace text is a subword of the suggestion text.\n\t * Use `subwordSmart` to only show ghost text if the replace text is a subword of the suggestion text, but the subword must start after the cursor position.\n\t * Defaults to `prefix`.\n\t*/\n\tmode?: 'prefix' | 'subword' | 'subwordSmart';\n\n\tshowToolbar?: 'always' | 'onHover' | 'never';\n\n\tsyntaxHighlightingEnabled?: boolean;\n\n\tsuppressSuggestions?: boolean;\n\n\tminShowDelay?: number;\n\tsuppressInSnippetMode?: boolean;\n\t/**\n\t * Does not clear active inline suggestions when the editor loses focus.\n\t */\n\tkeepOnBlur?: boolean;\n\n\t/**\n\t * Font family for inline suggestions.\n\t */\n\tfontFamily?: string | 'default';\n\n\tedits?: {\n\t\tallowCodeShifting?: 'always' | 'horizontal' | 'never';\n\n\t\trenderSideBySide?: 'never' | 'auto';\n\n\t\tshowCollapsed?: boolean;\n\n\t\t/**\n\t\t* @internal\n\t\t*/\n\t\tenabled?: boolean;\n\t};\n\n\t/**\n\t* @internal\n\t*/\n\ttriggerCommandOnProviderChange?: boolean;\n\n\t/**\n\t* @internal\n\t*/\n\texperimental?: {\n\t\t/**\n\t\t* @internal\n\t\t*/\n\t\tsuppressInlineSuggestions?: string;\n\n\t\t/**\n\t\t* @internal\n\t\t*/\n\t\temptyResponseInformation?: boolean;\n\n\t\tshowOnSuggestConflict?: 'always' | 'never' | 'whenSuggestListIsIncomplete';\n\t};\n}\n\ntype RequiredRecursive<T> = {\n\t[P in keyof T]-?: T[P] extends object | undefined ? RequiredRecursive<T[P]> : T[P];\n};\n\n/**\n * @internal\n */\nexport type InternalInlineSuggestOptions = Readonly<RequiredRecursive<IInlineSuggestOptions>>;\n\n/**\n * Configuration options for inline suggestions\n */\nclass InlineEditorSuggest extends BaseEditorOption<EditorOption.inlineSuggest, IInlineSuggestOptions, InternalInlineSuggestOptions> {\n\tconstructor() {\n\t\tconst defaults: InternalInlineSuggestOptions = {\n\t\t\tenabled: true,\n\t\t\tmode: 'subwordSmart',\n\t\t\tshowToolbar: 'onHover',\n\t\t\tsuppressSuggestions: false,\n\t\t\tkeepOnBlur: false,\n\t\t\tfontFamily: 'default',\n\t\t\tsyntaxHighlightingEnabled: true,\n\t\t\tminShowDelay: 0,\n\t\t\tsuppressInSnippetMode: true,\n\t\t\tedits: {\n\t\t\t\tenabled: true,\n\t\t\t\tshowCollapsed: false,\n\t\t\t\trenderSideBySide: 'auto',\n\t\t\t\tallowCodeShifting: 'always',\n\t\t\t},\n\t\t\ttriggerCommandOnProviderChange: false,\n\t\t\texperimental: {\n\t\t\t\tsuppressInlineSuggestions: '',\n\t\t\t\tshowOnSuggestConflict: 'never',\n\t\t\t\temptyResponseInformation: true,\n\t\t\t},\n\t\t};\n\n\t\tsuper(\n\t\t\tEditorOption.inlineSuggest, 'inlineSuggest', defaults,\n\t\t\t{\n\t\t\t\t'editor.inlineSuggest.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.enabled', \"Controls whether to automatically show inline suggestions in the editor.\")\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.showToolbar': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.showToolbar,\n\t\t\t\t\tenum: ['always', 'onHover', 'never'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('inlineSuggest.showToolbar.always', \"Show the inline suggestion toolbar whenever an inline suggestion is shown.\"),\n\t\t\t\t\t\tnls.localize('inlineSuggest.showToolbar.onHover', \"Show the inline suggestion toolbar when hovering over an inline suggestion.\"),\n\t\t\t\t\t\tnls.localize('inlineSuggest.showToolbar.never', \"Never show the inline suggestion toolbar.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.showToolbar', \"Controls when to show the inline suggestion toolbar.\"),\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.syntaxHighlightingEnabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.syntaxHighlightingEnabled,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.syntaxHighlightingEnabled', \"Controls whether to show syntax highlighting for inline suggestions in the editor.\"),\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.suppressSuggestions': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.suppressSuggestions,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.suppressSuggestions', \"Controls how inline suggestions interact with the suggest widget. If enabled, the suggest widget is not shown automatically when inline suggestions are available.\")\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.suppressInSnippetMode': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.suppressInSnippetMode,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.suppressInSnippetMode', \"Controls whether inline suggestions are suppressed when in snippet mode.\"),\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.minShowDelay': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdefault: 0,\n\t\t\t\t\tminimum: 0,\n\t\t\t\t\tmaximum: 10000,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.minShowDelay', \"Controls the minimal delay in milliseconds after which inline suggestions are shown after typing.\"),\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.experimental.suppressInlineSuggestions': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.experimental.suppressInlineSuggestions,\n\t\t\t\t\ttags: ['experimental'],\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.suppressInlineSuggestions', \"Suppresses inline completions for specified extension IDs -- comma separated.\"),\n\t\t\t\t\texperiment: {\n\t\t\t\t\t\tmode: 'auto'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.experimental.emptyResponseInformation': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.experimental.emptyResponseInformation,\n\t\t\t\t\ttags: ['experimental'],\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.emptyResponseInformation', \"Controls whether to send request information from the inline suggestion provider.\"),\n\t\t\t\t\texperiment: {\n\t\t\t\t\t\tmode: 'auto'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.triggerCommandOnProviderChange': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.triggerCommandOnProviderChange,\n\t\t\t\t\ttags: ['experimental'],\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.triggerCommandOnProviderChange', \"Controls whether to trigger a command when the inline suggestion provider changes.\"),\n\t\t\t\t\texperiment: {\n\t\t\t\t\t\tmode: 'auto'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.experimental.showOnSuggestConflict': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.experimental.showOnSuggestConflict,\n\t\t\t\t\ttags: ['experimental'],\n\t\t\t\t\tenum: ['always', 'never', 'whenSuggestListIsIncomplete'],\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.showOnSuggestConflict', \"Controls whether to show inline suggestions when there is a suggest conflict.\"),\n\t\t\t\t\texperiment: {\n\t\t\t\t\t\tmode: 'auto'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.fontFamily': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.fontFamily,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.fontFamily', \"Controls the font family of the inline suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.edits.allowCodeShifting': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.edits.allowCodeShifting,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.edits.allowCodeShifting', \"Controls whether showing a suggestion will shift the code to make space for the suggestion inline.\"),\n\t\t\t\t\tenum: ['always', 'horizontal', 'never'],\n\t\t\t\t\ttags: ['nextEditSuggestions']\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.edits.renderSideBySide': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: defaults.edits.renderSideBySide,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.edits.renderSideBySide', \"Controls whether larger suggestions can be shown side by side.\"),\n\t\t\t\t\tenum: ['auto', 'never'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.inlineSuggest.edits.renderSideBySide.auto', \"Larger suggestions will show side by side if there is enough space, otherwise they will be shown below.\"),\n\t\t\t\t\t\tnls.localize('editor.inlineSuggest.edits.renderSideBySide.never', \"Larger suggestions are never shown side by side and will always be shown below.\"),\n\t\t\t\t\t],\n\t\t\t\t\ttags: ['nextEditSuggestions']\n\t\t\t\t},\n\t\t\t\t'editor.inlineSuggest.edits.showCollapsed': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.edits.showCollapsed,\n\t\t\t\t\tdescription: nls.localize('inlineSuggest.edits.showCollapsed', \"Controls whether the suggestion will show as collapsed until jumping to it.\"),\n\t\t\t\t\ttags: ['nextEditSuggestions']\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalInlineSuggestOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IInlineSuggestOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tmode: stringSet(input.mode, this.defaultValue.mode, ['prefix', 'subword', 'subwordSmart']),\n\t\t\tshowToolbar: stringSet(input.showToolbar, this.defaultValue.showToolbar, ['always', 'onHover', 'never']),\n\t\t\tsuppressSuggestions: boolean(input.suppressSuggestions, this.defaultValue.suppressSuggestions),\n\t\t\tkeepOnBlur: boolean(input.keepOnBlur, this.defaultValue.keepOnBlur),\n\t\t\tfontFamily: EditorStringOption.string(input.fontFamily, this.defaultValue.fontFamily),\n\t\t\tsyntaxHighlightingEnabled: boolean(input.syntaxHighlightingEnabled, this.defaultValue.syntaxHighlightingEnabled),\n\t\t\tminShowDelay: EditorIntOption.clampedInt(input.minShowDelay, 0, 0, 10000),\n\t\t\tsuppressInSnippetMode: boolean(input.suppressInSnippetMode, this.defaultValue.suppressInSnippetMode),\n\t\t\tedits: this._validateEdits(input.edits),\n\t\t\ttriggerCommandOnProviderChange: boolean(input.triggerCommandOnProviderChange, this.defaultValue.triggerCommandOnProviderChange),\n\t\t\texperimental: this._validateExperimental(input.experimental),\n\t\t};\n\t}\n\n\tprivate _validateEdits(_input: unknown): InternalInlineSuggestOptions['edits'] {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue.edits;\n\t\t}\n\t\tconst input = _input as Unknown<InternalInlineSuggestOptions['edits']>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.edits.enabled),\n\t\t\tshowCollapsed: boolean(input.showCollapsed, this.defaultValue.edits.showCollapsed),\n\t\t\tallowCodeShifting: stringSet(input.allowCodeShifting, this.defaultValue.edits.allowCodeShifting, ['always', 'horizontal', 'never']),\n\t\t\trenderSideBySide: stringSet(input.renderSideBySide, this.defaultValue.edits.renderSideBySide, ['never', 'auto']),\n\t\t};\n\t}\n\n\tprivate _validateExperimental(_input: unknown): InternalInlineSuggestOptions['experimental'] {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue.experimental;\n\t\t}\n\t\tconst input = _input as Unknown<InternalInlineSuggestOptions['experimental']>;\n\t\treturn {\n\t\t\tsuppressInlineSuggestions: EditorStringOption.string(input.suppressInlineSuggestions, this.defaultValue.experimental.suppressInlineSuggestions),\n\t\t\tshowOnSuggestConflict: stringSet(input.showOnSuggestConflict, this.defaultValue.experimental.showOnSuggestConflict, ['always', 'never', 'whenSuggestListIsIncomplete']),\n\t\t\temptyResponseInformation: boolean(input.emptyResponseInformation, this.defaultValue.experimental.emptyResponseInformation),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region bracketPairColorization\n\nexport interface IBracketPairColorizationOptions {\n\t/**\n\t * Enable or disable bracket pair colorization.\n\t*/\n\tenabled?: boolean;\n\n\t/**\n\t * Use independent color pool per bracket type.\n\t*/\n\tindependentColorPoolPerBracketType?: boolean;\n}\n\n/**\n * @internal\n */\nexport type InternalBracketPairColorizationOptions = Readonly<Required<IBracketPairColorizationOptions>>;\n\n/**\n * Configuration options for inline suggestions\n */\nclass BracketPairColorization extends BaseEditorOption<EditorOption.bracketPairColorization, IBracketPairColorizationOptions, InternalBracketPairColorizationOptions> {\n\tconstructor() {\n\t\tconst defaults: InternalBracketPairColorizationOptions = {\n\t\t\tenabled: EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions.enabled,\n\t\t\tindependentColorPoolPerBracketType: EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions.independentColorPoolPerBracketType,\n\t\t};\n\n\t\tsuper(\n\t\t\tEditorOption.bracketPairColorization, 'bracketPairColorization', defaults,\n\t\t\t{\n\t\t\t\t'editor.bracketPairColorization.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tmarkdownDescription: nls.localize('bracketPairColorization.enabled', \"Controls whether bracket pair colorization is enabled or not. Use {0} to override the bracket highlight colors.\", '`#workbench.colorCustomizations#`')\n\t\t\t\t},\n\t\t\t\t'editor.bracketPairColorization.independentColorPoolPerBracketType': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.independentColorPoolPerBracketType,\n\t\t\t\t\tdescription: nls.localize('bracketPairColorization.independentColorPoolPerBracketType', \"Controls whether each bracket type has its own independent color pool.\")\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalBracketPairColorizationOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IBracketPairColorizationOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tindependentColorPoolPerBracketType: boolean(input.independentColorPoolPerBracketType, this.defaultValue.independentColorPoolPerBracketType),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region guides\n\nexport interface IGuidesOptions {\n\t/**\n\t * Enable rendering of bracket pair guides.\n\t * Defaults to false.\n\t*/\n\tbracketPairs?: boolean | 'active';\n\n\t/**\n\t * Enable rendering of vertical bracket pair guides.\n\t * Defaults to 'active'.\n\t */\n\tbracketPairsHorizontal?: boolean | 'active';\n\n\t/**\n\t * Enable highlighting of the active bracket pair.\n\t * Defaults to true.\n\t*/\n\thighlightActiveBracketPair?: boolean;\n\n\t/**\n\t * Enable rendering of indent guides.\n\t * Defaults to true.\n\t */\n\tindentation?: boolean;\n\n\t/**\n\t * Enable highlighting of the active indent guide.\n\t * Defaults to true.\n\t */\n\thighlightActiveIndentation?: boolean | 'always';\n}\n\n/**\n * @internal\n */\nexport type InternalGuidesOptions = Readonly<Required<IGuidesOptions>>;\n\n/**\n * Configuration options for inline suggestions\n */\nclass GuideOptions extends BaseEditorOption<EditorOption.guides, IGuidesOptions, InternalGuidesOptions> {\n\tconstructor() {\n\t\tconst defaults: InternalGuidesOptions = {\n\t\t\tbracketPairs: false,\n\t\t\tbracketPairsHorizontal: 'active',\n\t\t\thighlightActiveBracketPair: true,\n\n\t\t\tindentation: true,\n\t\t\thighlightActiveIndentation: true\n\t\t};\n\n\t\tsuper(\n\t\t\tEditorOption.guides, 'guides', defaults,\n\t\t\t{\n\t\t\t\t'editor.guides.bracketPairs': {\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, 'active', false],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairs.true', \"Enables bracket pair guides.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairs.active', \"Enables bracket pair guides only for the active bracket pair.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairs.false', \"Disables bracket pair guides.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.bracketPairs,\n\t\t\t\t\tdescription: nls.localize('editor.guides.bracketPairs', \"Controls whether bracket pair guides are enabled or not.\")\n\t\t\t\t},\n\t\t\t\t'editor.guides.bracketPairsHorizontal': {\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, 'active', false],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairsHorizontal.true', \"Enables horizontal guides as addition to vertical bracket pair guides.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairsHorizontal.active', \"Enables horizontal guides only for the active bracket pair.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.bracketPairsHorizontal.false', \"Disables horizontal bracket pair guides.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.bracketPairsHorizontal,\n\t\t\t\t\tdescription: nls.localize('editor.guides.bracketPairsHorizontal', \"Controls whether horizontal bracket pair guides are enabled or not.\")\n\t\t\t\t},\n\t\t\t\t'editor.guides.highlightActiveBracketPair': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.highlightActiveBracketPair,\n\t\t\t\t\tdescription: nls.localize('editor.guides.highlightActiveBracketPair', \"Controls whether the editor should highlight the active bracket pair.\")\n\t\t\t\t},\n\t\t\t\t'editor.guides.indentation': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.indentation,\n\t\t\t\t\tdescription: nls.localize('editor.guides.indentation', \"Controls whether the editor should render indent guides.\")\n\t\t\t\t},\n\t\t\t\t'editor.guides.highlightActiveIndentation': {\n\t\t\t\t\ttype: ['boolean', 'string'],\n\t\t\t\t\tenum: [true, 'always', false],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('editor.guides.highlightActiveIndentation.true', \"Highlights the active indent guide.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.highlightActiveIndentation.always', \"Highlights the active indent guide even if bracket guides are highlighted.\"),\n\t\t\t\t\t\tnls.localize('editor.guides.highlightActiveIndentation.false', \"Do not highlight the active indent guide.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.highlightActiveIndentation,\n\n\t\t\t\t\tdescription: nls.localize('editor.guides.highlightActiveIndentation', \"Controls whether the editor should highlight the active indent guide.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalGuidesOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IGuidesOptions>;\n\t\treturn {\n\t\t\tbracketPairs: primitiveSet(input.bracketPairs, this.defaultValue.bracketPairs, [true, false, 'active']),\n\t\t\tbracketPairsHorizontal: primitiveSet(input.bracketPairsHorizontal, this.defaultValue.bracketPairsHorizontal, [true, false, 'active']),\n\t\t\thighlightActiveBracketPair: boolean(input.highlightActiveBracketPair, this.defaultValue.highlightActiveBracketPair),\n\n\t\t\tindentation: boolean(input.indentation, this.defaultValue.indentation),\n\t\t\thighlightActiveIndentation: primitiveSet(input.highlightActiveIndentation, this.defaultValue.highlightActiveIndentation, [true, false, 'always']),\n\t\t};\n\t}\n}\n\nfunction primitiveSet<T extends string | boolean>(value: unknown, defaultValue: T, allowedValues: T[]): T {\n\tconst idx = allowedValues.indexOf(value as T);\n\tif (idx === -1) {\n\t\treturn defaultValue;\n\t}\n\treturn allowedValues[idx];\n}\n\n//#endregion\n\n//#region suggest\n\n/**\n * Configuration options for editor suggest widget\n */\nexport interface ISuggestOptions {\n\t/**\n\t * Overwrite word ends on accept. Default to false.\n\t */\n\tinsertMode?: 'insert' | 'replace';\n\t/**\n\t * Enable graceful matching. Defaults to true.\n\t */\n\tfilterGraceful?: boolean;\n\t/**\n\t * Prevent quick suggestions when a snippet is active. Defaults to true.\n\t */\n\tsnippetsPreventQuickSuggestions?: boolean;\n\t/**\n\t * Favors words that appear close to the cursor.\n\t */\n\tlocalityBonus?: boolean;\n\t/**\n\t * Enable using global storage for remembering suggestions.\n\t */\n\tshareSuggestSelections?: boolean;\n\t/**\n\t * Select suggestions when triggered via quick suggest or trigger characters\n\t */\n\tselectionMode?: 'always' | 'never' | 'whenTriggerCharacter' | 'whenQuickSuggestion';\n\t/**\n\t * Enable or disable icons in suggestions. Defaults to true.\n\t */\n\tshowIcons?: boolean;\n\t/**\n\t * Enable or disable the suggest status bar.\n\t */\n\tshowStatusBar?: boolean;\n\t/**\n\t * Enable or disable the rendering of the suggestion preview.\n\t */\n\tpreview?: boolean;\n\t/**\n\t * Configures the mode of the preview.\n\t*/\n\tpreviewMode?: 'prefix' | 'subword' | 'subwordSmart';\n\t/**\n\t * Show details inline with the label. Defaults to true.\n\t */\n\tshowInlineDetails?: boolean;\n\t/**\n\t * Show method-suggestions.\n\t */\n\tshowMethods?: boolean;\n\t/**\n\t * Show function-suggestions.\n\t */\n\tshowFunctions?: boolean;\n\t/**\n\t * Show constructor-suggestions.\n\t */\n\tshowConstructors?: boolean;\n\t/**\n\t * Show deprecated-suggestions.\n\t */\n\tshowDeprecated?: boolean;\n\t/**\n\t * Controls whether suggestions allow matches in the middle of the word instead of only at the beginning\n\t */\n\tmatchOnWordStartOnly?: boolean;\n\t/**\n\t * Show field-suggestions.\n\t */\n\tshowFields?: boolean;\n\t/**\n\t * Show variable-suggestions.\n\t */\n\tshowVariables?: boolean;\n\t/**\n\t * Show class-suggestions.\n\t */\n\tshowClasses?: boolean;\n\t/**\n\t * Show struct-suggestions.\n\t */\n\tshowStructs?: boolean;\n\t/**\n\t * Show interface-suggestions.\n\t */\n\tshowInterfaces?: boolean;\n\t/**\n\t * Show module-suggestions.\n\t */\n\tshowModules?: boolean;\n\t/**\n\t * Show property-suggestions.\n\t */\n\tshowProperties?: boolean;\n\t/**\n\t * Show event-suggestions.\n\t */\n\tshowEvents?: boolean;\n\t/**\n\t * Show operator-suggestions.\n\t */\n\tshowOperators?: boolean;\n\t/**\n\t * Show unit-suggestions.\n\t */\n\tshowUnits?: boolean;\n\t/**\n\t * Show value-suggestions.\n\t */\n\tshowValues?: boolean;\n\t/**\n\t * Show constant-suggestions.\n\t */\n\tshowConstants?: boolean;\n\t/**\n\t * Show enum-suggestions.\n\t */\n\tshowEnums?: boolean;\n\t/**\n\t * Show enumMember-suggestions.\n\t */\n\tshowEnumMembers?: boolean;\n\t/**\n\t * Show keyword-suggestions.\n\t */\n\tshowKeywords?: boolean;\n\t/**\n\t * Show text-suggestions.\n\t */\n\tshowWords?: boolean;\n\t/**\n\t * Show color-suggestions.\n\t */\n\tshowColors?: boolean;\n\t/**\n\t * Show file-suggestions.\n\t */\n\tshowFiles?: boolean;\n\t/**\n\t * Show reference-suggestions.\n\t */\n\tshowReferences?: boolean;\n\t/**\n\t * Show folder-suggestions.\n\t */\n\tshowFolders?: boolean;\n\t/**\n\t * Show typeParameter-suggestions.\n\t */\n\tshowTypeParameters?: boolean;\n\t/**\n\t * Show issue-suggestions.\n\t */\n\tshowIssues?: boolean;\n\t/**\n\t * Show user-suggestions.\n\t */\n\tshowUsers?: boolean;\n\t/**\n\t * Show snippet-suggestions.\n\t */\n\tshowSnippets?: boolean;\n}\n\n/**\n * @internal\n */\nexport type InternalSuggestOptions = Readonly<Required<ISuggestOptions>>;\n\nclass EditorSuggest extends BaseEditorOption<EditorOption.suggest, ISuggestOptions, InternalSuggestOptions> {\n\n\tconstructor() {\n\t\tconst defaults: InternalSuggestOptions = {\n\t\t\tinsertMode: 'insert',\n\t\t\tfilterGraceful: true,\n\t\t\tsnippetsPreventQuickSuggestions: false,\n\t\t\tlocalityBonus: false,\n\t\t\tshareSuggestSelections: false,\n\t\t\tselectionMode: 'always',\n\t\t\tshowIcons: true,\n\t\t\tshowStatusBar: false,\n\t\t\tpreview: false,\n\t\t\tpreviewMode: 'subwordSmart',\n\t\t\tshowInlineDetails: true,\n\t\t\tshowMethods: true,\n\t\t\tshowFunctions: true,\n\t\t\tshowConstructors: true,\n\t\t\tshowDeprecated: true,\n\t\t\tmatchOnWordStartOnly: true,\n\t\t\tshowFields: true,\n\t\t\tshowVariables: true,\n\t\t\tshowClasses: true,\n\t\t\tshowStructs: true,\n\t\t\tshowInterfaces: true,\n\t\t\tshowModules: true,\n\t\t\tshowProperties: true,\n\t\t\tshowEvents: true,\n\t\t\tshowOperators: true,\n\t\t\tshowUnits: true,\n\t\t\tshowValues: true,\n\t\t\tshowConstants: true,\n\t\t\tshowEnums: true,\n\t\t\tshowEnumMembers: true,\n\t\t\tshowKeywords: true,\n\t\t\tshowWords: true,\n\t\t\tshowColors: true,\n\t\t\tshowFiles: true,\n\t\t\tshowReferences: true,\n\t\t\tshowFolders: true,\n\t\t\tshowTypeParameters: true,\n\t\t\tshowSnippets: true,\n\t\t\tshowUsers: true,\n\t\t\tshowIssues: true,\n\t\t};\n\t\tsuper(\n\t\t\tEditorOption.suggest, 'suggest', defaults,\n\t\t\t{\n\t\t\t\t'editor.suggest.insertMode': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['insert', 'replace'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('suggest.insertMode.insert', \"Insert suggestion without overwriting text right of the cursor.\"),\n\t\t\t\t\t\tnls.localize('suggest.insertMode.replace', \"Insert suggestion and overwrite text right of the cursor.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.insertMode,\n\t\t\t\t\tdescription: nls.localize('suggest.insertMode', \"Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.filterGraceful': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.filterGraceful,\n\t\t\t\t\tdescription: nls.localize('suggest.filterGraceful', \"Controls whether filtering and sorting suggestions accounts for small typos.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.localityBonus': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.localityBonus,\n\t\t\t\t\tdescription: nls.localize('suggest.localityBonus', \"Controls whether sorting favors words that appear close to the cursor.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.shareSuggestSelections': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.shareSuggestSelections,\n\t\t\t\t\tmarkdownDescription: nls.localize('suggest.shareSuggestSelections', \"Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.selectionMode': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['always', 'never', 'whenTriggerCharacter', 'whenQuickSuggestion'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('suggest.insertMode.always', \"Always select a suggestion when automatically triggering IntelliSense.\"),\n\t\t\t\t\t\tnls.localize('suggest.insertMode.never', \"Never select a suggestion when automatically triggering IntelliSense.\"),\n\t\t\t\t\t\tnls.localize('suggest.insertMode.whenTriggerCharacter', \"Select a suggestion only when triggering IntelliSense from a trigger character.\"),\n\t\t\t\t\t\tnls.localize('suggest.insertMode.whenQuickSuggestion', \"Select a suggestion only when triggering IntelliSense as you type.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: defaults.selectionMode,\n\t\t\t\t\tmarkdownDescription: nls.localize('suggest.selectionMode', \"Controls whether a suggestion is selected when the widget shows. Note that this only applies to automatically triggered suggestions ({0} and {1}) and that a suggestion is always selected when explicitly invoked, e.g via `Ctrl+Space`.\", '`#editor.quickSuggestions#`', '`#editor.suggestOnTriggerCharacters#`')\n\t\t\t\t},\n\t\t\t\t'editor.suggest.snippetsPreventQuickSuggestions': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.snippetsPreventQuickSuggestions,\n\t\t\t\t\tdescription: nls.localize('suggest.snippetsPreventQuickSuggestions', \"Controls whether an active snippet prevents quick suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showIcons': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.showIcons,\n\t\t\t\t\tdescription: nls.localize('suggest.showIcons', \"Controls whether to show or hide icons in suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showStatusBar': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.showStatusBar,\n\t\t\t\t\tdescription: nls.localize('suggest.showStatusBar', \"Controls the visibility of the status bar at the bottom of the suggest widget.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.preview': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.preview,\n\t\t\t\t\tdescription: nls.localize('suggest.preview', \"Controls whether to preview the suggestion outcome in the editor.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showInlineDetails': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.showInlineDetails,\n\t\t\t\t\tdescription: nls.localize('suggest.showInlineDetails', \"Controls whether suggest details show inline with the label or only in the details widget.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.maxVisibleSuggestions': {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tdeprecationMessage: nls.localize('suggest.maxVisibleSuggestions.dep', \"This setting is deprecated. The suggest widget can now be resized.\"),\n\t\t\t\t},\n\t\t\t\t'editor.suggest.filteredTypes': {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tdeprecationMessage: nls.localize('deprecated', \"This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showMethods': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showMethods', \"When enabled IntelliSense shows `method`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showFunctions': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showFunctions', \"When enabled IntelliSense shows `function`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showConstructors': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showConstructors', \"When enabled IntelliSense shows `constructor`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showDeprecated': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showDeprecated', \"When enabled IntelliSense shows `deprecated`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.matchOnWordStartOnly': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.matchOnWordStartOnly', \"When enabled IntelliSense filtering requires that the first character matches on a word start. For example, `c` on `Console` or `WebContext` but _not_ on `description`. When disabled IntelliSense will show more results but still sorts them by match quality.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showFields': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showFields', \"When enabled IntelliSense shows `field`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showVariables': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showVariables', \"When enabled IntelliSense shows `variable`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showClasses': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showClasss', \"When enabled IntelliSense shows `class`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showStructs': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showStructs', \"When enabled IntelliSense shows `struct`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showInterfaces': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showInterfaces', \"When enabled IntelliSense shows `interface`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showModules': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showModules', \"When enabled IntelliSense shows `module`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showProperties': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showPropertys', \"When enabled IntelliSense shows `property`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showEvents': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showEvents', \"When enabled IntelliSense shows `event`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showOperators': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showOperators', \"When enabled IntelliSense shows `operator`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showUnits': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showUnits', \"When enabled IntelliSense shows `unit`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showValues': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showValues', \"When enabled IntelliSense shows `value`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showConstants': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showConstants', \"When enabled IntelliSense shows `constant`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showEnums': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showEnums', \"When enabled IntelliSense shows `enum`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showEnumMembers': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showEnumMembers', \"When enabled IntelliSense shows `enumMember`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showKeywords': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showKeywords', \"When enabled IntelliSense shows `keyword`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showWords': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showTexts', \"When enabled IntelliSense shows `text`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showColors': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showColors', \"When enabled IntelliSense shows `color`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showFiles': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showFiles', \"When enabled IntelliSense shows `file`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showReferences': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showReferences', \"When enabled IntelliSense shows `reference`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showCustomcolors': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showCustomcolors', \"When enabled IntelliSense shows `customcolor`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showFolders': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showFolders', \"When enabled IntelliSense shows `folder`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showTypeParameters': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showTypeParameters', \"When enabled IntelliSense shows `typeParameter`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showSnippets': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showSnippets', \"When enabled IntelliSense shows `snippet`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showUsers': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showUsers', \"When enabled IntelliSense shows `user`-suggestions.\")\n\t\t\t\t},\n\t\t\t\t'editor.suggest.showIssues': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: true,\n\t\t\t\t\tmarkdownDescription: nls.localize('editor.suggest.showIssues', \"When enabled IntelliSense shows `issues`-suggestions.\")\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): InternalSuggestOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<ISuggestOptions>;\n\t\treturn {\n\t\t\tinsertMode: stringSet(input.insertMode, this.defaultValue.insertMode, ['insert', 'replace']),\n\t\t\tfilterGraceful: boolean(input.filterGraceful, this.defaultValue.filterGraceful),\n\t\t\tsnippetsPreventQuickSuggestions: boolean(input.snippetsPreventQuickSuggestions, this.defaultValue.filterGraceful),\n\t\t\tlocalityBonus: boolean(input.localityBonus, this.defaultValue.localityBonus),\n\t\t\tshareSuggestSelections: boolean(input.shareSuggestSelections, this.defaultValue.shareSuggestSelections),\n\t\t\tselectionMode: stringSet(input.selectionMode, this.defaultValue.selectionMode, ['always', 'never', 'whenQuickSuggestion', 'whenTriggerCharacter']),\n\t\t\tshowIcons: boolean(input.showIcons, this.defaultValue.showIcons),\n\t\t\tshowStatusBar: boolean(input.showStatusBar, this.defaultValue.showStatusBar),\n\t\t\tpreview: boolean(input.preview, this.defaultValue.preview),\n\t\t\tpreviewMode: stringSet(input.previewMode, this.defaultValue.previewMode, ['prefix', 'subword', 'subwordSmart']),\n\t\t\tshowInlineDetails: boolean(input.showInlineDetails, this.defaultValue.showInlineDetails),\n\t\t\tshowMethods: boolean(input.showMethods, this.defaultValue.showMethods),\n\t\t\tshowFunctions: boolean(input.showFunctions, this.defaultValue.showFunctions),\n\t\t\tshowConstructors: boolean(input.showConstructors, this.defaultValue.showConstructors),\n\t\t\tshowDeprecated: boolean(input.showDeprecated, this.defaultValue.showDeprecated),\n\t\t\tmatchOnWordStartOnly: boolean(input.matchOnWordStartOnly, this.defaultValue.matchOnWordStartOnly),\n\t\t\tshowFields: boolean(input.showFields, this.defaultValue.showFields),\n\t\t\tshowVariables: boolean(input.showVariables, this.defaultValue.showVariables),\n\t\t\tshowClasses: boolean(input.showClasses, this.defaultValue.showClasses),\n\t\t\tshowStructs: boolean(input.showStructs, this.defaultValue.showStructs),\n\t\t\tshowInterfaces: boolean(input.showInterfaces, this.defaultValue.showInterfaces),\n\t\t\tshowModules: boolean(input.showModules, this.defaultValue.showModules),\n\t\t\tshowProperties: boolean(input.showProperties, this.defaultValue.showProperties),\n\t\t\tshowEvents: boolean(input.showEvents, this.defaultValue.showEvents),\n\t\t\tshowOperators: boolean(input.showOperators, this.defaultValue.showOperators),\n\t\t\tshowUnits: boolean(input.showUnits, this.defaultValue.showUnits),\n\t\t\tshowValues: boolean(input.showValues, this.defaultValue.showValues),\n\t\t\tshowConstants: boolean(input.showConstants, this.defaultValue.showConstants),\n\t\t\tshowEnums: boolean(input.showEnums, this.defaultValue.showEnums),\n\t\t\tshowEnumMembers: boolean(input.showEnumMembers, this.defaultValue.showEnumMembers),\n\t\t\tshowKeywords: boolean(input.showKeywords, this.defaultValue.showKeywords),\n\t\t\tshowWords: boolean(input.showWords, this.defaultValue.showWords),\n\t\t\tshowColors: boolean(input.showColors, this.defaultValue.showColors),\n\t\t\tshowFiles: boolean(input.showFiles, this.defaultValue.showFiles),\n\t\t\tshowReferences: boolean(input.showReferences, this.defaultValue.showReferences),\n\t\t\tshowFolders: boolean(input.showFolders, this.defaultValue.showFolders),\n\t\t\tshowTypeParameters: boolean(input.showTypeParameters, this.defaultValue.showTypeParameters),\n\t\t\tshowSnippets: boolean(input.showSnippets, this.defaultValue.showSnippets),\n\t\t\tshowUsers: boolean(input.showUsers, this.defaultValue.showUsers),\n\t\t\tshowIssues: boolean(input.showIssues, this.defaultValue.showIssues),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region smart select\n\nexport interface ISmartSelectOptions {\n\tselectLeadingAndTrailingWhitespace?: boolean;\n\tselectSubwords?: boolean;\n}\n\n/**\n * @internal\n */\nexport type SmartSelectOptions = Readonly<Required<ISmartSelectOptions>>;\n\nclass SmartSelect extends BaseEditorOption<EditorOption.smartSelect, ISmartSelectOptions, SmartSelectOptions> {\n\n\tconstructor() {\n\t\tsuper(\n\t\t\tEditorOption.smartSelect, 'smartSelect',\n\t\t\t{\n\t\t\t\tselectLeadingAndTrailingWhitespace: true,\n\t\t\t\tselectSubwords: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\t'editor.smartSelect.selectLeadingAndTrailingWhitespace': {\n\t\t\t\t\tdescription: nls.localize('selectLeadingAndTrailingWhitespace', \"Whether leading and trailing whitespace should always be selected.\"),\n\t\t\t\t\tdefault: true,\n\t\t\t\t\ttype: 'boolean'\n\t\t\t\t},\n\t\t\t\t'editor.smartSelect.selectSubwords': {\n\t\t\t\t\tdescription: nls.localize('selectSubwords', \"Whether subwords (like 'foo' in 'fooBar' or 'foo_bar') should be selected.\"),\n\t\t\t\t\tdefault: true,\n\t\t\t\t\ttype: 'boolean'\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): Readonly<Required<ISmartSelectOptions>> {\n\t\tif (!input || typeof input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\treturn {\n\t\t\tselectLeadingAndTrailingWhitespace: boolean((input as ISmartSelectOptions).selectLeadingAndTrailingWhitespace, this.defaultValue.selectLeadingAndTrailingWhitespace),\n\t\t\tselectSubwords: boolean((input as ISmartSelectOptions).selectSubwords, this.defaultValue.selectSubwords),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region wordSegmenterLocales\n\n/**\n * Locales used for segmenting lines into words when doing word related navigations or operations.\n *\n * Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.).\n */\nclass WordSegmenterLocales extends BaseEditorOption<EditorOption.wordSegmenterLocales, string | string[], string[]> {\n\tconstructor() {\n\t\tconst defaults: string[] = [];\n\n\t\tsuper(\n\t\t\tEditorOption.wordSegmenterLocales, 'wordSegmenterLocales', defaults,\n\t\t\t{\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t}, {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: 'string'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tdescription: nls.localize('wordSegmenterLocales', \"Locales to be used for word segmentation when doing word related navigations or operations. Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.).\"),\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tdefault: defaults,\n\t\t\t},\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): string[] {\n\t\tif (typeof input === 'string') {\n\t\t\tinput = [input];\n\t\t}\n\t\tif (Array.isArray(input)) {\n\t\t\tconst validLocales: string[] = [];\n\t\t\tfor (const locale of input) {\n\t\t\t\tif (typeof locale === 'string') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (Intl.Segmenter.supportedLocalesOf(locale).length > 0) {\n\t\t\t\t\t\t\tvalidLocales.push(locale);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// ignore invalid locales\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn validLocales;\n\t\t}\n\n\t\treturn this.defaultValue;\n\t}\n}\n\n\n//#endregion\n\n//#region wrappingIndent\n\n/**\n * Describes how to indent wrapped lines.\n */\nexport const enum WrappingIndent {\n\t/**\n\t * No indentation => wrapped lines begin at column 1.\n\t */\n\tNone = 0,\n\t/**\n\t * Same => wrapped lines get the same indentation as the parent.\n\t */\n\tSame = 1,\n\t/**\n\t * Indent => wrapped lines get +1 indentation toward the parent.\n\t */\n\tIndent = 2,\n\t/**\n\t * DeepIndent => wrapped lines get +2 indentation toward the parent.\n\t */\n\tDeepIndent = 3\n}\n\nclass WrappingIndentOption extends BaseEditorOption<EditorOption.wrappingIndent, 'none' | 'same' | 'indent' | 'deepIndent', WrappingIndent> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.wrappingIndent, 'wrappingIndent', WrappingIndent.Same,\n\t\t\t{\n\t\t\t\t'editor.wrappingIndent': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tenum: ['none', 'same', 'indent', 'deepIndent'],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('wrappingIndent.none', \"No indentation. Wrapped lines begin at column 1.\"),\n\t\t\t\t\t\tnls.localize('wrappingIndent.same', \"Wrapped lines get the same indentation as the parent.\"),\n\t\t\t\t\t\tnls.localize('wrappingIndent.indent', \"Wrapped lines get +1 indentation toward the parent.\"),\n\t\t\t\t\t\tnls.localize('wrappingIndent.deepIndent', \"Wrapped lines get +2 indentation toward the parent.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdescription: nls.localize('wrappingIndent', \"Controls the indentation of wrapped lines.\"),\n\t\t\t\t\tdefault: 'same'\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(input: unknown): WrappingIndent {\n\t\tswitch (input) {\n\t\t\tcase 'none': return WrappingIndent.None;\n\t\t\tcase 'same': return WrappingIndent.Same;\n\t\t\tcase 'indent': return WrappingIndent.Indent;\n\t\t\tcase 'deepIndent': return WrappingIndent.DeepIndent;\n\t\t}\n\t\treturn WrappingIndent.Same;\n\t}\n\n\tpublic override compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, value: WrappingIndent): WrappingIndent {\n\t\tconst accessibilitySupport = options.get(EditorOption.accessibilitySupport);\n\t\tif (accessibilitySupport === AccessibilitySupport.Enabled) {\n\t\t\t// if we know for a fact that a screen reader is attached, we use no indent wrapping to\n\t\t\t// help that the editor's wrapping points match the textarea's wrapping points\n\t\t\treturn WrappingIndent.None;\n\t\t}\n\t\treturn value;\n\t}\n}\n\n//#endregion\n\n//#region wrappingInfo\n\nexport interface EditorWrappingInfo {\n\treadonly isDominatedByLongLines: boolean;\n\treadonly isWordWrapMinified: boolean;\n\treadonly isViewportWrapping: boolean;\n\treadonly wrappingColumn: number;\n}\n\nclass EditorWrappingInfoComputer extends ComputedEditorOption<EditorOption.wrappingInfo, EditorWrappingInfo> {\n\n\tconstructor() {\n\t\tsuper(EditorOption.wrappingInfo, {\n\t\t\tisDominatedByLongLines: false,\n\t\t\tisWordWrapMinified: false,\n\t\t\tisViewportWrapping: false,\n\t\t\twrappingColumn: -1\n\t\t});\n\t}\n\n\tpublic compute(env: IEnvironmentalOptions, options: IComputedEditorOptions, _: EditorWrappingInfo): EditorWrappingInfo {\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\n\t\treturn {\n\t\t\tisDominatedByLongLines: env.isDominatedByLongLines,\n\t\t\tisWordWrapMinified: layoutInfo.isWordWrapMinified,\n\t\t\tisViewportWrapping: layoutInfo.isViewportWrapping,\n\t\t\twrappingColumn: layoutInfo.wrappingColumn,\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region dropIntoEditor\n\n/**\n * Configuration options for editor drop into behavior\n */\nexport interface IDropIntoEditorOptions {\n\t/**\n\t * Enable dropping into editor.\n\t * Defaults to true.\n\t */\n\tenabled?: boolean;\n\n\t/**\n\t * Controls if a widget is shown after a drop.\n\t * Defaults to 'afterDrop'.\n\t */\n\tshowDropSelector?: 'afterDrop' | 'never';\n}\n\n/**\n * @internal\n */\nexport type EditorDropIntoEditorOptions = Readonly<Required<IDropIntoEditorOptions>>;\n\nclass EditorDropIntoEditor extends BaseEditorOption<EditorOption.dropIntoEditor, IDropIntoEditorOptions, EditorDropIntoEditorOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorDropIntoEditorOptions = { enabled: true, showDropSelector: 'afterDrop' };\n\t\tsuper(\n\t\t\tEditorOption.dropIntoEditor, 'dropIntoEditor', defaults,\n\t\t\t{\n\t\t\t\t'editor.dropIntoEditor.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tmarkdownDescription: nls.localize('dropIntoEditor.enabled', \"Controls whether you can drag and drop a file into a text editor by holding down the `Shift` key (instead of opening the file in an editor).\"),\n\t\t\t\t},\n\t\t\t\t'editor.dropIntoEditor.showDropSelector': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tmarkdownDescription: nls.localize('dropIntoEditor.showDropSelector', \"Controls if a widget is shown when dropping files into the editor. This widget lets you control how the file is dropped.\"),\n\t\t\t\t\tenum: [\n\t\t\t\t\t\t'afterDrop',\n\t\t\t\t\t\t'never'\n\t\t\t\t\t],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('dropIntoEditor.showDropSelector.afterDrop', \"Show the drop selector widget after a file is dropped into the editor.\"),\n\t\t\t\t\t\tnls.localize('dropIntoEditor.showDropSelector.never', \"Never show the drop selector widget. Instead the default drop provider is always used.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: 'afterDrop',\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorDropIntoEditorOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IDropIntoEditorOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tshowDropSelector: stringSet(input.showDropSelector, this.defaultValue.showDropSelector, ['afterDrop', 'never']),\n\t\t};\n\t}\n}\n\n//#endregion\n\n//#region pasteAs\n\n/**\n * Configuration options for editor pasting as into behavior\n */\nexport interface IPasteAsOptions {\n\t/**\n\t * Enable paste as functionality in editors.\n\t * Defaults to true.\n\t */\n\tenabled?: boolean;\n\n\t/**\n\t * Controls if a widget is shown after a drop.\n\t * Defaults to 'afterPaste'.\n\t */\n\tshowPasteSelector?: 'afterPaste' | 'never';\n}\n\n/**\n * @internal\n */\nexport type EditorPasteAsOptions = Readonly<Required<IPasteAsOptions>>;\n\nclass EditorPasteAs extends BaseEditorOption<EditorOption.pasteAs, IPasteAsOptions, EditorPasteAsOptions> {\n\n\tconstructor() {\n\t\tconst defaults: EditorPasteAsOptions = { enabled: true, showPasteSelector: 'afterPaste' };\n\t\tsuper(\n\t\t\tEditorOption.pasteAs, 'pasteAs', defaults,\n\t\t\t{\n\t\t\t\t'editor.pasteAs.enabled': {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: defaults.enabled,\n\t\t\t\t\tmarkdownDescription: nls.localize('pasteAs.enabled', \"Controls whether you can paste content in different ways.\"),\n\t\t\t\t},\n\t\t\t\t'editor.pasteAs.showPasteSelector': {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tmarkdownDescription: nls.localize('pasteAs.showPasteSelector', \"Controls if a widget is shown when pasting content in to the editor. This widget lets you control how the file is pasted.\"),\n\t\t\t\t\tenum: [\n\t\t\t\t\t\t'afterPaste',\n\t\t\t\t\t\t'never'\n\t\t\t\t\t],\n\t\t\t\t\tenumDescriptions: [\n\t\t\t\t\t\tnls.localize('pasteAs.showPasteSelector.afterPaste', \"Show the paste selector widget after content is pasted into the editor.\"),\n\t\t\t\t\t\tnls.localize('pasteAs.showPasteSelector.never', \"Never show the paste selector widget. Instead the default pasting behavior is always used.\"),\n\t\t\t\t\t],\n\t\t\t\t\tdefault: 'afterPaste',\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic validate(_input: unknown): EditorPasteAsOptions {\n\t\tif (!_input || typeof _input !== 'object') {\n\t\t\treturn this.defaultValue;\n\t\t}\n\t\tconst input = _input as Unknown<IPasteAsOptions>;\n\t\treturn {\n\t\t\tenabled: boolean(input.enabled, this.defaultValue.enabled),\n\t\t\tshowPasteSelector: stringSet(input.showPasteSelector, this.defaultValue.showPasteSelector, ['afterPaste', 'never']),\n\t\t};\n\t}\n}\n\n//#endregion\n\n/**\n * @internal\n */\nexport const editorOptionsRegistry: IEditorOption<EditorOption, unknown>[] = [];\n\nfunction register<K extends EditorOption, V>(option: IEditorOption<K, V>): IEditorOption<K, V> {\n\teditorOptionsRegistry[option.id] = option;\n\treturn option;\n}\n\nexport const enum EditorOption {\n\tacceptSuggestionOnCommitCharacter,\n\tacceptSuggestionOnEnter,\n\taccessibilitySupport,\n\taccessibilityPageSize,\n\tallowOverflow,\n\tallowVariableLineHeights,\n\tallowVariableFonts,\n\tallowVariableFontsInAccessibilityMode,\n\tariaLabel,\n\tariaRequired,\n\tautoClosingBrackets,\n\tautoClosingComments,\n\tscreenReaderAnnounceInlineSuggestion,\n\tautoClosingDelete,\n\tautoClosingOvertype,\n\tautoClosingQuotes,\n\tautoIndent,\n\tautoIndentOnPaste,\n\tautoIndentOnPasteWithinString,\n\tautomaticLayout,\n\tautoSurround,\n\tbracketPairColorization,\n\tguides,\n\tcodeLens,\n\tcodeLensFontFamily,\n\tcodeLensFontSize,\n\tcolorDecorators,\n\tcolorDecoratorsLimit,\n\tcolumnSelection,\n\tcomments,\n\tcontextmenu,\n\tcopyWithSyntaxHighlighting,\n\tcursorBlinking,\n\tcursorSmoothCaretAnimation,\n\tcursorStyle,\n\tcursorSurroundingLines,\n\tcursorSurroundingLinesStyle,\n\tcursorWidth,\n\tcursorHeight,\n\tdisableLayerHinting,\n\tdisableMonospaceOptimizations,\n\tdomReadOnly,\n\tdragAndDrop,\n\tdropIntoEditor,\n\teditContext,\n\temptySelectionClipboard,\n\texperimentalGpuAcceleration,\n\texperimentalWhitespaceRendering,\n\textraEditorClassName,\n\tfastScrollSensitivity,\n\tfind,\n\tfixedOverflowWidgets,\n\tfolding,\n\tfoldingStrategy,\n\tfoldingHighlight,\n\tfoldingImportsByDefault,\n\tfoldingMaximumRegions,\n\tunfoldOnClickAfterEndOfLine,\n\tfontFamily,\n\tfontInfo,\n\tfontLigatures,\n\tfontSize,\n\tfontWeight,\n\tfontVariations,\n\tformatOnPaste,\n\tformatOnType,\n\tglyphMargin,\n\tgotoLocation,\n\thideCursorInOverviewRuler,\n\thover,\n\tinDiffEditor,\n\tinlineSuggest,\n\tletterSpacing,\n\tlightbulb,\n\tlineDecorationsWidth,\n\tlineHeight,\n\tlineNumbers,\n\tlineNumbersMinChars,\n\tlinkedEditing,\n\tlinks,\n\tmatchBrackets,\n\tminimap,\n\tmouseStyle,\n\tmouseWheelScrollSensitivity,\n\tmouseWheelZoom,\n\tmultiCursorMergeOverlapping,\n\tmultiCursorModifier,\n\tmouseMiddleClickAction,\n\tmultiCursorPaste,\n\tmultiCursorLimit,\n\toccurrencesHighlight,\n\toccurrencesHighlightDelay,\n\tovertypeCursorStyle,\n\tovertypeOnPaste,\n\toverviewRulerBorder,\n\toverviewRulerLanes,\n\tpadding,\n\tpasteAs,\n\tparameterHints,\n\tpeekWidgetDefaultFocus,\n\tplaceholder,\n\tdefinitionLinkOpensInPeek,\n\tquickSuggestions,\n\tquickSuggestionsDelay,\n\treadOnly,\n\treadOnlyMessage,\n\trenameOnType,\n\trenderRichScreenReaderContent,\n\trenderControlCharacters,\n\trenderFinalNewline,\n\trenderLineHighlight,\n\trenderLineHighlightOnlyWhenFocus,\n\trenderValidationDecorations,\n\trenderWhitespace,\n\trevealHorizontalRightPadding,\n\troundedSelection,\n\trulers,\n\tscrollbar,\n\tscrollBeyondLastColumn,\n\tscrollBeyondLastLine,\n\tscrollPredominantAxis,\n\tselectionClipboard,\n\tselectionHighlight,\n\tselectionHighlightMaxLength,\n\tselectionHighlightMultiline,\n\tselectOnLineNumbers,\n\tshowFoldingControls,\n\tshowUnused,\n\tsnippetSuggestions,\n\tsmartSelect,\n\tsmoothScrolling,\n\tstickyScroll,\n\tstickyTabStops,\n\tstopRenderingLineAfter,\n\tsuggest,\n\tsuggestFontSize,\n\tsuggestLineHeight,\n\tsuggestOnTriggerCharacters,\n\tsuggestSelection,\n\ttabCompletion,\n\ttabIndex,\n\ttrimWhitespaceOnDelete,\n\tunicodeHighlighting,\n\tunusualLineTerminators,\n\tuseShadowDOM,\n\tuseTabStops,\n\twordBreak,\n\twordSegmenterLocales,\n\twordSeparators,\n\twordWrap,\n\twordWrapBreakAfterCharacters,\n\twordWrapBreakBeforeCharacters,\n\twordWrapColumn,\n\twordWrapOverride1,\n\twordWrapOverride2,\n\twrappingIndent,\n\twrappingStrategy,\n\tshowDeprecated,\n\tinertialScroll,\n\tinlayHints,\n\twrapOnEscapedLineFeeds,\n\t// Leave these at the end (because they have dependencies!)\n\teffectiveCursorStyle,\n\teditorClassName,\n\tpixelRatio,\n\ttabFocusMode,\n\tlayoutInfo,\n\twrappingInfo,\n\tdefaultColorDecorators,\n\tcolorDecoratorsActivatedOn,\n\tinlineCompletionsAccessibilityVerbose,\n\teffectiveEditContext,\n\tscrollOnMiddleClick,\n\teffectiveAllowVariableFonts\n}\n\nexport const EditorOptions = {\n\tacceptSuggestionOnCommitCharacter: register(new EditorBooleanOption(\n\t\tEditorOption.acceptSuggestionOnCommitCharacter, 'acceptSuggestionOnCommitCharacter', true,\n\t\t{ markdownDescription: nls.localize('acceptSuggestionOnCommitCharacter', \"Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.\") }\n\t)),\n\tacceptSuggestionOnEnter: register(new EditorStringEnumOption(\n\t\tEditorOption.acceptSuggestionOnEnter, 'acceptSuggestionOnEnter',\n\t\t'on' as 'on' | 'smart' | 'off',\n\t\t['on', 'smart', 'off'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('acceptSuggestionOnEnterSmart', \"Only accept a suggestion with `Enter` when it makes a textual change.\"),\n\t\t\t\t''\n\t\t\t],\n\t\t\tmarkdownDescription: nls.localize('acceptSuggestionOnEnter', \"Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.\")\n\t\t}\n\t)),\n\taccessibilitySupport: register(new EditorAccessibilitySupport()),\n\taccessibilityPageSize: register(new EditorIntOption(EditorOption.accessibilityPageSize, 'accessibilityPageSize', 500, 1, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{\n\t\t\tdescription: nls.localize('accessibilityPageSize', \"Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default.\"),\n\t\t\ttags: ['accessibility']\n\t\t}\n\t)),\n\tallowOverflow: register(new EditorBooleanOption(\n\t\tEditorOption.allowOverflow, 'allowOverflow', true,\n\t)),\n\tallowVariableLineHeights: register(new EditorBooleanOption(\n\t\tEditorOption.allowVariableLineHeights, 'allowVariableLineHeights', true,\n\t\t{\n\t\t\tdescription: nls.localize('allowVariableLineHeights', \"Controls whether to allow using variable line heights in the editor.\")\n\t\t}\n\t)),\n\tallowVariableFonts: register(new EditorBooleanOption(\n\t\tEditorOption.allowVariableFonts, 'allowVariableFonts', true,\n\t\t{\n\t\t\tdescription: nls.localize('allowVariableFonts', \"Controls whether to allow using variable fonts in the editor.\")\n\t\t}\n\t)),\n\tallowVariableFontsInAccessibilityMode: register(new EditorBooleanOption(\n\t\tEditorOption.allowVariableFontsInAccessibilityMode, 'allowVariableFontsInAccessibilityMode', false,\n\t\t{\n\t\t\tdescription: nls.localize('allowVariableFontsInAccessibilityMode', \"Controls whether to allow using variable fonts in the editor in the accessibility mode.\"),\n\t\t\ttags: ['accessibility']\n\t\t}\n\t)),\n\tariaLabel: register(new EditorStringOption(\n\t\tEditorOption.ariaLabel, 'ariaLabel', nls.localize('editorViewAccessibleLabel', \"Editor content\")\n\t)),\n\tariaRequired: register(new EditorBooleanOption(\n\t\tEditorOption.ariaRequired, 'ariaRequired', false, undefined\n\t)),\n\tscreenReaderAnnounceInlineSuggestion: register(new EditorBooleanOption(\n\t\tEditorOption.screenReaderAnnounceInlineSuggestion, 'screenReaderAnnounceInlineSuggestion', true,\n\t\t{\n\t\t\tdescription: nls.localize('screenReaderAnnounceInlineSuggestion', \"Control whether inline suggestions are announced by a screen reader.\"),\n\t\t\ttags: ['accessibility']\n\t\t}\n\t)),\n\tautoClosingBrackets: register(new EditorStringEnumOption(\n\t\tEditorOption.autoClosingBrackets, 'autoClosingBrackets',\n\t\t'languageDefined' as 'always' | 'languageDefined' | 'beforeWhitespace' | 'never',\n\t\t['always', 'languageDefined', 'beforeWhitespace', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('editor.autoClosingBrackets.languageDefined', \"Use language configurations to determine when to autoclose brackets.\"),\n\t\t\t\tnls.localize('editor.autoClosingBrackets.beforeWhitespace', \"Autoclose brackets only when the cursor is to the left of whitespace.\"),\n\t\t\t\t'',\n\t\t\t],\n\t\t\tdescription: nls.localize('autoClosingBrackets', \"Controls whether the editor should automatically close brackets after the user adds an opening bracket.\")\n\t\t}\n\t)),\n\tautoClosingComments: register(new EditorStringEnumOption(\n\t\tEditorOption.autoClosingComments, 'autoClosingComments',\n\t\t'languageDefined' as 'always' | 'languageDefined' | 'beforeWhitespace' | 'never',\n\t\t['always', 'languageDefined', 'beforeWhitespace', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('editor.autoClosingComments.languageDefined', \"Use language configurations to determine when to autoclose comments.\"),\n\t\t\t\tnls.localize('editor.autoClosingComments.beforeWhitespace', \"Autoclose comments only when the cursor is to the left of whitespace.\"),\n\t\t\t\t'',\n\t\t\t],\n\t\t\tdescription: nls.localize('autoClosingComments', \"Controls whether the editor should automatically close comments after the user adds an opening comment.\")\n\t\t}\n\t)),\n\tautoClosingDelete: register(new EditorStringEnumOption(\n\t\tEditorOption.autoClosingDelete, 'autoClosingDelete',\n\t\t'auto' as 'always' | 'auto' | 'never',\n\t\t['always', 'auto', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('editor.autoClosingDelete.auto', \"Remove adjacent closing quotes or brackets only if they were automatically inserted.\"),\n\t\t\t\t'',\n\t\t\t],\n\t\t\tdescription: nls.localize('autoClosingDelete', \"Controls whether the editor should remove adjacent closing quotes or brackets when deleting.\")\n\t\t}\n\t)),\n\tautoClosingOvertype: register(new EditorStringEnumOption(\n\t\tEditorOption.autoClosingOvertype, 'autoClosingOvertype',\n\t\t'auto' as 'always' | 'auto' | 'never',\n\t\t['always', 'auto', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('editor.autoClosingOvertype.auto', \"Type over closing quotes or brackets only if they were automatically inserted.\"),\n\t\t\t\t'',\n\t\t\t],\n\t\t\tdescription: nls.localize('autoClosingOvertype', \"Controls whether the editor should type over closing quotes or brackets.\")\n\t\t}\n\t)),\n\tautoClosingQuotes: register(new EditorStringEnumOption(\n\t\tEditorOption.autoClosingQuotes, 'autoClosingQuotes',\n\t\t'languageDefined' as 'always' | 'languageDefined' | 'beforeWhitespace' | 'never',\n\t\t['always', 'languageDefined', 'beforeWhitespace', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('editor.autoClosingQuotes.languageDefined', \"Use language configurations to determine when to autoclose quotes.\"),\n\t\t\t\tnls.localize('editor.autoClosingQuotes.beforeWhitespace', \"Autoclose quotes only when the cursor is to the left of whitespace.\"),\n\t\t\t\t'',\n\t\t\t],\n\t\t\tdescription: nls.localize('autoClosingQuotes', \"Controls whether the editor should automatically close quotes after the user adds an opening quote.\")\n\t\t}\n\t)),\n\tautoIndent: register(new EditorEnumOption(\n\t\tEditorOption.autoIndent, 'autoIndent',\n\t\tEditorAutoIndentStrategy.Full, 'full',\n\t\t['none', 'keep', 'brackets', 'advanced', 'full'],\n\t\t_autoIndentFromString,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('editor.autoIndent.none', \"The editor will not insert indentation automatically.\"),\n\t\t\t\tnls.localize('editor.autoIndent.keep', \"The editor will keep the current line's indentation.\"),\n\t\t\t\tnls.localize('editor.autoIndent.brackets', \"The editor will keep the current line's indentation and honor language defined brackets.\"),\n\t\t\t\tnls.localize('editor.autoIndent.advanced', \"The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages.\"),\n\t\t\t\tnls.localize('editor.autoIndent.full', \"The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('autoIndent', \"Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.\")\n\t\t}\n\t)),\n\tautoIndentOnPaste: register(new EditorBooleanOption(\n\t\tEditorOption.autoIndentOnPaste, 'autoIndentOnPaste', false,\n\t\t{ description: nls.localize('autoIndentOnPaste', \"Controls whether the editor should automatically auto-indent the pasted content.\") }\n\t)),\n\tautoIndentOnPasteWithinString: register(new EditorBooleanOption(\n\t\tEditorOption.autoIndentOnPasteWithinString, 'autoIndentOnPasteWithinString', true,\n\t\t{ description: nls.localize('autoIndentOnPasteWithinString', \"Controls whether the editor should automatically auto-indent the pasted content when pasted within a string. This takes effect when autoIndentOnPaste is true.\") }\n\t)),\n\tautomaticLayout: register(new EditorBooleanOption(\n\t\tEditorOption.automaticLayout, 'automaticLayout', false,\n\t)),\n\tautoSurround: register(new EditorStringEnumOption(\n\t\tEditorOption.autoSurround, 'autoSurround',\n\t\t'languageDefined' as 'languageDefined' | 'quotes' | 'brackets' | 'never',\n\t\t['languageDefined', 'quotes', 'brackets', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('editor.autoSurround.languageDefined', \"Use language configurations to determine when to automatically surround selections.\"),\n\t\t\t\tnls.localize('editor.autoSurround.quotes', \"Surround with quotes but not brackets.\"),\n\t\t\t\tnls.localize('editor.autoSurround.brackets', \"Surround with brackets but not quotes.\"),\n\t\t\t\t''\n\t\t\t],\n\t\t\tdescription: nls.localize('autoSurround', \"Controls whether the editor should automatically surround selections when typing quotes or brackets.\")\n\t\t}\n\t)),\n\tbracketPairColorization: register(new BracketPairColorization()),\n\tbracketPairGuides: register(new GuideOptions()),\n\tstickyTabStops: register(new EditorBooleanOption(\n\t\tEditorOption.stickyTabStops, 'stickyTabStops', false,\n\t\t{ description: nls.localize('stickyTabStops', \"Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.\") }\n\t)),\n\tcodeLens: register(new EditorBooleanOption(\n\t\tEditorOption.codeLens, 'codeLens', true,\n\t\t{ description: nls.localize('codeLens', \"Controls whether the editor shows CodeLens.\") }\n\t)),\n\tcodeLensFontFamily: register(new EditorStringOption(\n\t\tEditorOption.codeLensFontFamily, 'codeLensFontFamily', '',\n\t\t{ description: nls.localize('codeLensFontFamily', \"Controls the font family for CodeLens.\") }\n\t)),\n\tcodeLensFontSize: register(new EditorIntOption(EditorOption.codeLensFontSize, 'codeLensFontSize', 0, 0, 100, {\n\t\ttype: 'number',\n\t\tdefault: 0,\n\t\tminimum: 0,\n\t\tmaximum: 100,\n\t\tmarkdownDescription: nls.localize('codeLensFontSize', \"Controls the font size in pixels for CodeLens. When set to 0, 90% of `#editor.fontSize#` is used.\")\n\t})),\n\tcolorDecorators: register(new EditorBooleanOption(\n\t\tEditorOption.colorDecorators, 'colorDecorators', true,\n\t\t{ description: nls.localize('colorDecorators', \"Controls whether the editor should render the inline color decorators and color picker.\") }\n\t)),\n\tcolorDecoratorActivatedOn: register(new EditorStringEnumOption(EditorOption.colorDecoratorsActivatedOn, 'colorDecoratorsActivatedOn', 'clickAndHover' as 'clickAndHover' | 'hover' | 'click', ['clickAndHover', 'hover', 'click'] as const, {\n\t\tenumDescriptions: [\n\t\t\tnls.localize('editor.colorDecoratorActivatedOn.clickAndHover', \"Make the color picker appear both on click and hover of the color decorator\"),\n\t\t\tnls.localize('editor.colorDecoratorActivatedOn.hover', \"Make the color picker appear on hover of the color decorator\"),\n\t\t\tnls.localize('editor.colorDecoratorActivatedOn.click', \"Make the color picker appear on click of the color decorator\")\n\t\t],\n\t\tdescription: nls.localize('colorDecoratorActivatedOn', \"Controls the condition to make a color picker appear from a color decorator.\")\n\t})),\n\tcolorDecoratorsLimit: register(new EditorIntOption(\n\t\tEditorOption.colorDecoratorsLimit, 'colorDecoratorsLimit', 500, 1, 1000000,\n\t\t{\n\t\t\tmarkdownDescription: nls.localize('colorDecoratorsLimit', \"Controls the max number of color decorators that can be rendered in an editor at once.\")\n\t\t}\n\t)),\n\tcolumnSelection: register(new EditorBooleanOption(\n\t\tEditorOption.columnSelection, 'columnSelection', false,\n\t\t{ description: nls.localize('columnSelection', \"Enable that the selection with the mouse and keys is doing column selection.\") }\n\t)),\n\tcomments: register(new EditorComments()),\n\tcontextmenu: register(new EditorBooleanOption(\n\t\tEditorOption.contextmenu, 'contextmenu', true,\n\t)),\n\tcopyWithSyntaxHighlighting: register(new EditorBooleanOption(\n\t\tEditorOption.copyWithSyntaxHighlighting, 'copyWithSyntaxHighlighting', true,\n\t\t{ description: nls.localize('copyWithSyntaxHighlighting', \"Controls whether syntax highlighting should be copied into the clipboard.\") }\n\t)),\n\tcursorBlinking: register(new EditorEnumOption(\n\t\tEditorOption.cursorBlinking, 'cursorBlinking',\n\t\tTextEditorCursorBlinkingStyle.Blink, 'blink',\n\t\t['blink', 'smooth', 'phase', 'expand', 'solid'],\n\t\tcursorBlinkingStyleFromString,\n\t\t{ description: nls.localize('cursorBlinking', \"Control the cursor animation style.\") }\n\t)),\n\tcursorSmoothCaretAnimation: register(new EditorStringEnumOption(\n\t\tEditorOption.cursorSmoothCaretAnimation, 'cursorSmoothCaretAnimation',\n\t\t'off' as 'off' | 'explicit' | 'on',\n\t\t['off', 'explicit', 'on'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('cursorSmoothCaretAnimation.off', \"Smooth caret animation is disabled.\"),\n\t\t\t\tnls.localize('cursorSmoothCaretAnimation.explicit', \"Smooth caret animation is enabled only when the user moves the cursor with an explicit gesture.\"),\n\t\t\t\tnls.localize('cursorSmoothCaretAnimation.on', \"Smooth caret animation is always enabled.\")\n\t\t\t],\n\t\t\tdescription: nls.localize('cursorSmoothCaretAnimation', \"Controls whether the smooth caret animation should be enabled.\")\n\t\t}\n\t)),\n\tcursorStyle: register(new EditorEnumOption(\n\t\tEditorOption.cursorStyle, 'cursorStyle',\n\t\tTextEditorCursorStyle.Line, 'line',\n\t\t['line', 'block', 'underline', 'line-thin', 'block-outline', 'underline-thin'],\n\t\tcursorStyleFromString,\n\t\t{ description: nls.localize('cursorStyle', \"Controls the cursor style in insert input mode.\") }\n\t)),\n\tovertypeCursorStyle: register(new EditorEnumOption(\n\t\tEditorOption.overtypeCursorStyle, 'overtypeCursorStyle',\n\t\tTextEditorCursorStyle.Block, 'block',\n\t\t['line', 'block', 'underline', 'line-thin', 'block-outline', 'underline-thin'],\n\t\tcursorStyleFromString,\n\t\t{ description: nls.localize('overtypeCursorStyle', \"Controls the cursor style in overtype input mode.\") }\n\t)),\n\tcursorSurroundingLines: register(new EditorIntOption(\n\t\tEditorOption.cursorSurroundingLines, 'cursorSurroundingLines',\n\t\t0, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{ description: nls.localize('cursorSurroundingLines', \"Controls the minimal number of visible leading lines (minimum 0) and trailing lines (minimum 1) surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.\") }\n\t)),\n\tcursorSurroundingLinesStyle: register(new EditorStringEnumOption(\n\t\tEditorOption.cursorSurroundingLinesStyle, 'cursorSurroundingLinesStyle',\n\t\t'default' as 'default' | 'all',\n\t\t['default', 'all'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('cursorSurroundingLinesStyle.default', \"`cursorSurroundingLines` is enforced only when triggered via the keyboard or API.\"),\n\t\t\t\tnls.localize('cursorSurroundingLinesStyle.all', \"`cursorSurroundingLines` is enforced always.\")\n\t\t\t],\n\t\t\tmarkdownDescription: nls.localize('cursorSurroundingLinesStyle', \"Controls when `#editor.cursorSurroundingLines#` should be enforced.\")\n\t\t}\n\t)),\n\tcursorWidth: register(new EditorIntOption(\n\t\tEditorOption.cursorWidth, 'cursorWidth',\n\t\t0, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{ markdownDescription: nls.localize('cursorWidth', \"Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.\") }\n\t)),\n\tcursorHeight: register(new EditorIntOption(\n\t\tEditorOption.cursorHeight, 'cursorHeight',\n\t\t0, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{ markdownDescription: nls.localize('cursorHeight', \"Controls the height of the cursor when `#editor.cursorStyle#` is set to `line`. Cursor's max height depends on line height.\") }\n\t)),\n\tdisableLayerHinting: register(new EditorBooleanOption(\n\t\tEditorOption.disableLayerHinting, 'disableLayerHinting', false,\n\t)),\n\tdisableMonospaceOptimizations: register(new EditorBooleanOption(\n\t\tEditorOption.disableMonospaceOptimizations, 'disableMonospaceOptimizations', false\n\t)),\n\tdomReadOnly: register(new EditorBooleanOption(\n\t\tEditorOption.domReadOnly, 'domReadOnly', false,\n\t)),\n\tdragAndDrop: register(new EditorBooleanOption(\n\t\tEditorOption.dragAndDrop, 'dragAndDrop', true,\n\t\t{ description: nls.localize('dragAndDrop', \"Controls whether the editor should allow moving selections via drag and drop.\") }\n\t)),\n\temptySelectionClipboard: register(new EditorEmptySelectionClipboard()),\n\tdropIntoEditor: register(new EditorDropIntoEditor()),\n\teditContext: register(new EditorBooleanOption(\n\t\tEditorOption.editContext, 'editContext', true,\n\t\t{\n\t\t\tdescription: nls.localize('editContext', \"Sets whether the EditContext API should be used instead of the text area to power input in the editor.\"),\n\t\t\tincluded: platform.isChrome || platform.isEdge || platform.isNative\n\t\t}\n\t)),\n\trenderRichScreenReaderContent: register(new EditorBooleanOption(\n\t\tEditorOption.renderRichScreenReaderContent, 'renderRichScreenReaderContent', false,\n\t\t{\n\t\t\tmarkdownDescription: nls.localize('renderRichScreenReaderContent', \"Whether to render rich screen reader content when the `#editor.editContext#` setting is enabled.\"),\n\t\t}\n\t)),\n\tstickyScroll: register(new EditorStickyScroll()),\n\texperimentalGpuAcceleration: register(new EditorStringEnumOption(\n\t\tEditorOption.experimentalGpuAcceleration, 'experimentalGpuAcceleration',\n\t\t'off' as 'off' | 'on',\n\t\t['off', 'on'] as const,\n\t\t{\n\t\t\ttags: ['experimental'],\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('experimentalGpuAcceleration.off', \"Use regular DOM-based rendering.\"),\n\t\t\t\tnls.localize('experimentalGpuAcceleration.on', \"Use GPU acceleration.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('experimentalGpuAcceleration', \"Controls whether to use the experimental GPU acceleration to render the editor.\")\n\t\t}\n\t)),\n\texperimentalWhitespaceRendering: register(new EditorStringEnumOption(\n\t\tEditorOption.experimentalWhitespaceRendering, 'experimentalWhitespaceRendering',\n\t\t'svg' as 'svg' | 'font' | 'off',\n\t\t['svg', 'font', 'off'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('experimentalWhitespaceRendering.svg', \"Use a new rendering method with svgs.\"),\n\t\t\t\tnls.localize('experimentalWhitespaceRendering.font', \"Use a new rendering method with font characters.\"),\n\t\t\t\tnls.localize('experimentalWhitespaceRendering.off', \"Use the stable rendering method.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('experimentalWhitespaceRendering', \"Controls whether whitespace is rendered with a new, experimental method.\")\n\t\t}\n\t)),\n\textraEditorClassName: register(new EditorStringOption(\n\t\tEditorOption.extraEditorClassName, 'extraEditorClassName', '',\n\t)),\n\tfastScrollSensitivity: register(new EditorFloatOption(\n\t\tEditorOption.fastScrollSensitivity, 'fastScrollSensitivity',\n\t\t5, x => (x <= 0 ? 5 : x),\n\t\t{ markdownDescription: nls.localize('fastScrollSensitivity', \"Scrolling speed multiplier when pressing `Alt`.\") }\n\t)),\n\tfind: register(new EditorFind()),\n\tfixedOverflowWidgets: register(new EditorBooleanOption(\n\t\tEditorOption.fixedOverflowWidgets, 'fixedOverflowWidgets', false,\n\t)),\n\tfolding: register(new EditorBooleanOption(\n\t\tEditorOption.folding, 'folding', true,\n\t\t{ description: nls.localize('folding', \"Controls whether the editor has code folding enabled.\") }\n\t)),\n\tfoldingStrategy: register(new EditorStringEnumOption(\n\t\tEditorOption.foldingStrategy, 'foldingStrategy',\n\t\t'auto' as 'auto' | 'indentation',\n\t\t['auto', 'indentation'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('foldingStrategy.auto', \"Use a language-specific folding strategy if available, else the indentation-based one.\"),\n\t\t\t\tnls.localize('foldingStrategy.indentation', \"Use the indentation-based folding strategy.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('foldingStrategy', \"Controls the strategy for computing folding ranges.\")\n\t\t}\n\t)),\n\tfoldingHighlight: register(new EditorBooleanOption(\n\t\tEditorOption.foldingHighlight, 'foldingHighlight', true,\n\t\t{ description: nls.localize('foldingHighlight', \"Controls whether the editor should highlight folded ranges.\") }\n\t)),\n\tfoldingImportsByDefault: register(new EditorBooleanOption(\n\t\tEditorOption.foldingImportsByDefault, 'foldingImportsByDefault', false,\n\t\t{ description: nls.localize('foldingImportsByDefault', \"Controls whether the editor automatically collapses import ranges.\") }\n\t)),\n\tfoldingMaximumRegions: register(new EditorIntOption(\n\t\tEditorOption.foldingMaximumRegions, 'foldingMaximumRegions',\n\t\t5000, 10, 65000, // limit must be less than foldingRanges MAX_FOLDING_REGIONS\n\t\t{ description: nls.localize('foldingMaximumRegions', \"The maximum number of foldable regions. Increasing this value may result in the editor becoming less responsive when the current source has a large number of foldable regions.\") }\n\t)),\n\tunfoldOnClickAfterEndOfLine: register(new EditorBooleanOption(\n\t\tEditorOption.unfoldOnClickAfterEndOfLine, 'unfoldOnClickAfterEndOfLine', false,\n\t\t{ description: nls.localize('unfoldOnClickAfterEndOfLine', \"Controls whether clicking on the empty content after a folded line will unfold the line.\") }\n\t)),\n\tfontFamily: register(new EditorStringOption(\n\t\tEditorOption.fontFamily, 'fontFamily', EDITOR_FONT_DEFAULTS.fontFamily,\n\t\t{ description: nls.localize('fontFamily', \"Controls the font family.\") }\n\t)),\n\tfontInfo: register(new EditorFontInfo()),\n\tfontLigatures2: register(new EditorFontLigatures()),\n\tfontSize: register(new EditorFontSize()),\n\tfontWeight: register(new EditorFontWeight()),\n\tfontVariations: register(new EditorFontVariations()),\n\tformatOnPaste: register(new EditorBooleanOption(\n\t\tEditorOption.formatOnPaste, 'formatOnPaste', false,\n\t\t{ description: nls.localize('formatOnPaste', \"Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.\") }\n\t)),\n\tformatOnType: register(new EditorBooleanOption(\n\t\tEditorOption.formatOnType, 'formatOnType', false,\n\t\t{ description: nls.localize('formatOnType', \"Controls whether the editor should automatically format the line after typing.\") }\n\t)),\n\tglyphMargin: register(new EditorBooleanOption(\n\t\tEditorOption.glyphMargin, 'glyphMargin', true,\n\t\t{ description: nls.localize('glyphMargin', \"Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.\") }\n\t)),\n\tgotoLocation: register(new EditorGoToLocation()),\n\thideCursorInOverviewRuler: register(new EditorBooleanOption(\n\t\tEditorOption.hideCursorInOverviewRuler, 'hideCursorInOverviewRuler', false,\n\t\t{ description: nls.localize('hideCursorInOverviewRuler', \"Controls whether the cursor should be hidden in the overview ruler.\") }\n\t)),\n\thover: register(new EditorHover()),\n\tinDiffEditor: register(new EditorBooleanOption(\n\t\tEditorOption.inDiffEditor, 'inDiffEditor', false\n\t)),\n\tinertialScroll: register(new EditorBooleanOption(\n\t\tEditorOption.inertialScroll, 'inertialScroll', false,\n\t\t{ description: nls.localize('inertialScroll', \"Make scrolling inertial - mostly useful with touchpad on linux.\") }\n\t)),\n\tletterSpacing: register(new EditorFloatOption(\n\t\tEditorOption.letterSpacing, 'letterSpacing',\n\t\tEDITOR_FONT_DEFAULTS.letterSpacing, x => EditorFloatOption.clamp(x, -5, 20),\n\t\t{ description: nls.localize('letterSpacing', \"Controls the letter spacing in pixels.\") }\n\t)),\n\tlightbulb: register(new EditorLightbulb()),\n\tlineDecorationsWidth: register(new EditorLineDecorationsWidth()),\n\tlineHeight: register(new EditorLineHeight()),\n\tlineNumbers: register(new EditorRenderLineNumbersOption()),\n\tlineNumbersMinChars: register(new EditorIntOption(\n\t\tEditorOption.lineNumbersMinChars, 'lineNumbersMinChars',\n\t\t5, 1, 300\n\t)),\n\tlinkedEditing: register(new EditorBooleanOption(\n\t\tEditorOption.linkedEditing, 'linkedEditing', false,\n\t\t{ description: nls.localize('linkedEditing', \"Controls whether the editor has linked editing enabled. Depending on the language, related symbols such as HTML tags, are updated while editing.\") }\n\t)),\n\tlinks: register(new EditorBooleanOption(\n\t\tEditorOption.links, 'links', true,\n\t\t{ description: nls.localize('links', \"Controls whether the editor should detect links and make them clickable.\") }\n\t)),\n\tmatchBrackets: register(new EditorStringEnumOption(\n\t\tEditorOption.matchBrackets, 'matchBrackets',\n\t\t'always' as 'never' | 'near' | 'always',\n\t\t['always', 'near', 'never'] as const,\n\t\t{ description: nls.localize('matchBrackets', \"Highlight matching brackets.\") }\n\t)),\n\tminimap: register(new EditorMinimap()),\n\tmouseStyle: register(new EditorStringEnumOption(\n\t\tEditorOption.mouseStyle, 'mouseStyle',\n\t\t'text' as 'text' | 'default' | 'copy',\n\t\t['text', 'default', 'copy'] as const,\n\t)),\n\tmouseWheelScrollSensitivity: register(new EditorFloatOption(\n\t\tEditorOption.mouseWheelScrollSensitivity, 'mouseWheelScrollSensitivity',\n\t\t1, x => (x === 0 ? 1 : x),\n\t\t{ markdownDescription: nls.localize('mouseWheelScrollSensitivity', \"A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\") }\n\t)),\n\tmouseWheelZoom: register(new EditorBooleanOption(\n\t\tEditorOption.mouseWheelZoom, 'mouseWheelZoom', false,\n\t\t{\n\t\t\tmarkdownDescription: platform.isMacintosh\n\t\t\t\t? nls.localize('mouseWheelZoom.mac', \"Zoom the font of the editor when using mouse wheel and holding `Cmd`.\")\n\t\t\t\t: nls.localize('mouseWheelZoom', \"Zoom the font of the editor when using mouse wheel and holding `Ctrl`.\")\n\t\t}\n\t)),\n\tmultiCursorMergeOverlapping: register(new EditorBooleanOption(\n\t\tEditorOption.multiCursorMergeOverlapping, 'multiCursorMergeOverlapping', true,\n\t\t{ description: nls.localize('multiCursorMergeOverlapping', \"Merge multiple cursors when they are overlapping.\") }\n\t)),\n\tmultiCursorModifier: register(new EditorEnumOption(\n\t\tEditorOption.multiCursorModifier, 'multiCursorModifier',\n\t\t'altKey', 'alt',\n\t\t['ctrlCmd', 'alt'],\n\t\t_multiCursorModifierFromString,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('multiCursorModifier.ctrlCmd', \"Maps to `Control` on Windows and Linux and to `Command` on macOS.\"),\n\t\t\t\tnls.localize('multiCursorModifier.alt', \"Maps to `Alt` on Windows and Linux and to `Option` on macOS.\")\n\t\t\t],\n\t\t\tmarkdownDescription: nls.localize({\n\t\t\t\tkey: 'multiCursorModifier',\n\t\t\t\tcomment: [\n\t\t\t\t\t'- `ctrlCmd` refers to a value the setting can take and should not be localized.',\n\t\t\t\t\t'- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized.'\n\t\t\t\t]\n\t\t\t}, \"The modifier to be used to add multiple cursors with the mouse. The Go to Definition and Open Link mouse gestures will adapt such that they do not conflict with the [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).\")\n\t\t}\n\t)),\n\tmouseMiddleClickAction: register(new EditorStringEnumOption(\n\t\tEditorOption.mouseMiddleClickAction, 'mouseMiddleClickAction', 'default' as MouseMiddleClickAction,\n\t\t['default', 'openLink', 'ctrlLeftClick'] as MouseMiddleClickAction[],\n\t\t{ description: nls.localize('mouseMiddleClickAction', \"Controls what happens when middle mouse button is clicked in the editor.\") }\n\t)),\n\tmultiCursorPaste: register(new EditorStringEnumOption(\n\t\tEditorOption.multiCursorPaste, 'multiCursorPaste',\n\t\t'spread' as 'spread' | 'full',\n\t\t['spread', 'full'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('multiCursorPaste.spread', \"Each cursor pastes a single line of the text.\"),\n\t\t\t\tnls.localize('multiCursorPaste.full', \"Each cursor pastes the full text.\")\n\t\t\t],\n\t\t\tmarkdownDescription: nls.localize('multiCursorPaste', \"Controls pasting when the line count of the pasted text matches the cursor count.\")\n\t\t}\n\t)),\n\tmultiCursorLimit: register(new EditorIntOption(\n\t\tEditorOption.multiCursorLimit, 'multiCursorLimit', 10000, 1, 100000,\n\t\t{\n\t\t\tmarkdownDescription: nls.localize('multiCursorLimit', \"Controls the max number of cursors that can be in an active editor at once.\")\n\t\t}\n\t)),\n\toccurrencesHighlight: register(new EditorStringEnumOption(\n\t\tEditorOption.occurrencesHighlight, 'occurrencesHighlight',\n\t\t'singleFile' as 'off' | 'singleFile' | 'multiFile',\n\t\t['off', 'singleFile', 'multiFile'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('occurrencesHighlight.off', \"Does not highlight occurrences.\"),\n\t\t\t\tnls.localize('occurrencesHighlight.singleFile', \"Highlights occurrences only in the current file.\"),\n\t\t\t\tnls.localize('occurrencesHighlight.multiFile', \"Experimental: Highlights occurrences across all valid open files.\")\n\t\t\t],\n\t\t\tmarkdownDescription: nls.localize('occurrencesHighlight', \"Controls whether occurrences should be highlighted across open files.\")\n\t\t}\n\t)),\n\toccurrencesHighlightDelay: register(new EditorIntOption(\n\t\tEditorOption.occurrencesHighlightDelay, 'occurrencesHighlightDelay',\n\t\t0, 0, 2000,\n\t\t{\n\t\t\tdescription: nls.localize('occurrencesHighlightDelay', \"Controls the delay in milliseconds after which occurrences are highlighted.\"),\n\t\t\ttags: ['preview']\n\t\t}\n\t)),\n\tovertypeOnPaste: register(new EditorBooleanOption(\n\t\tEditorOption.overtypeOnPaste, 'overtypeOnPaste', true,\n\t\t{ description: nls.localize('overtypeOnPaste', \"Controls whether pasting should overtype.\") }\n\t)),\n\toverviewRulerBorder: register(new EditorBooleanOption(\n\t\tEditorOption.overviewRulerBorder, 'overviewRulerBorder', true,\n\t\t{ description: nls.localize('overviewRulerBorder', \"Controls whether a border should be drawn around the overview ruler.\") }\n\t)),\n\toverviewRulerLanes: register(new EditorIntOption(\n\t\tEditorOption.overviewRulerLanes, 'overviewRulerLanes',\n\t\t3, 0, 3\n\t)),\n\tpadding: register(new EditorPadding()),\n\tpasteAs: register(new EditorPasteAs()),\n\tparameterHints: register(new EditorParameterHints()),\n\tpeekWidgetDefaultFocus: register(new EditorStringEnumOption(\n\t\tEditorOption.peekWidgetDefaultFocus, 'peekWidgetDefaultFocus',\n\t\t'tree' as 'tree' | 'editor',\n\t\t['tree', 'editor'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('peekWidgetDefaultFocus.tree', \"Focus the tree when opening peek\"),\n\t\t\t\tnls.localize('peekWidgetDefaultFocus.editor', \"Focus the editor when opening peek\")\n\t\t\t],\n\t\t\tdescription: nls.localize('peekWidgetDefaultFocus', \"Controls whether to focus the inline editor or the tree in the peek widget.\")\n\t\t}\n\t)),\n\tplaceholder: register(new PlaceholderOption()),\n\tdefinitionLinkOpensInPeek: register(new EditorBooleanOption(\n\t\tEditorOption.definitionLinkOpensInPeek, 'definitionLinkOpensInPeek', false,\n\t\t{ description: nls.localize('definitionLinkOpensInPeek', \"Controls whether the Go to Definition mouse gesture always opens the peek widget.\") }\n\t)),\n\tquickSuggestions: register(new EditorQuickSuggestions()),\n\tquickSuggestionsDelay: register(new EditorIntOption(\n\t\tEditorOption.quickSuggestionsDelay, 'quickSuggestionsDelay',\n\t\t10, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{\n\t\t\tdescription: nls.localize('quickSuggestionsDelay', \"Controls the delay in milliseconds after which quick suggestions will show up.\"),\n\t\t\texperiment: {\n\t\t\t\tmode: 'auto'\n\t\t\t}\n\t\t}\n\t)),\n\treadOnly: register(new EditorBooleanOption(\n\t\tEditorOption.readOnly, 'readOnly', false,\n\t)),\n\treadOnlyMessage: register(new ReadonlyMessage()),\n\trenameOnType: register(new EditorBooleanOption(\n\t\tEditorOption.renameOnType, 'renameOnType', false,\n\t\t{ description: nls.localize('renameOnType', \"Controls whether the editor auto renames on type.\"), markdownDeprecationMessage: nls.localize('renameOnTypeDeprecate', \"Deprecated, use `#editor.linkedEditing#` instead.\") }\n\t)),\n\trenderControlCharacters: register(new EditorBooleanOption(\n\t\tEditorOption.renderControlCharacters, 'renderControlCharacters', true,\n\t\t{ description: nls.localize('renderControlCharacters', \"Controls whether the editor should render control characters.\"), restricted: true }\n\t)),\n\trenderFinalNewline: register(new EditorStringEnumOption(\n\t\tEditorOption.renderFinalNewline, 'renderFinalNewline',\n\t\t(platform.isLinux ? 'dimmed' : 'on') as 'off' | 'on' | 'dimmed',\n\t\t['off', 'on', 'dimmed'] as const,\n\t\t{ description: nls.localize('renderFinalNewline', \"Render last line number when the file ends with a newline.\") }\n\t)),\n\trenderLineHighlight: register(new EditorStringEnumOption(\n\t\tEditorOption.renderLineHighlight, 'renderLineHighlight',\n\t\t'line' as 'none' | 'gutter' | 'line' | 'all',\n\t\t['none', 'gutter', 'line', 'all'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\tnls.localize('renderLineHighlight.all', \"Highlights both the gutter and the current line.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('renderLineHighlight', \"Controls how the editor should render the current line highlight.\")\n\t\t}\n\t)),\n\trenderLineHighlightOnlyWhenFocus: register(new EditorBooleanOption(\n\t\tEditorOption.renderLineHighlightOnlyWhenFocus, 'renderLineHighlightOnlyWhenFocus', false,\n\t\t{ description: nls.localize('renderLineHighlightOnlyWhenFocus', \"Controls if the editor should render the current line highlight only when the editor is focused.\") }\n\t)),\n\trenderValidationDecorations: register(new EditorStringEnumOption(\n\t\tEditorOption.renderValidationDecorations, 'renderValidationDecorations',\n\t\t'editable' as 'editable' | 'on' | 'off',\n\t\t['editable', 'on', 'off'] as const\n\t)),\n\trenderWhitespace: register(new EditorStringEnumOption(\n\t\tEditorOption.renderWhitespace, 'renderWhitespace',\n\t\t'selection' as 'selection' | 'none' | 'boundary' | 'trailing' | 'all',\n\t\t['none', 'boundary', 'selection', 'trailing', 'all'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\t'',\n\t\t\t\tnls.localize('renderWhitespace.boundary', \"Render whitespace characters except for single spaces between words.\"),\n\t\t\t\tnls.localize('renderWhitespace.selection', \"Render whitespace characters only on selected text.\"),\n\t\t\t\tnls.localize('renderWhitespace.trailing', \"Render only trailing whitespace characters.\"),\n\t\t\t\t''\n\t\t\t],\n\t\t\tdescription: nls.localize('renderWhitespace', \"Controls how the editor should render whitespace characters.\")\n\t\t}\n\t)),\n\trevealHorizontalRightPadding: register(new EditorIntOption(\n\t\tEditorOption.revealHorizontalRightPadding, 'revealHorizontalRightPadding',\n\t\t15, 0, 1000,\n\t)),\n\troundedSelection: register(new EditorBooleanOption(\n\t\tEditorOption.roundedSelection, 'roundedSelection', true,\n\t\t{ description: nls.localize('roundedSelection', \"Controls whether selections should have rounded corners.\") }\n\t)),\n\trulers: register(new EditorRulers()),\n\tscrollbar: register(new EditorScrollbar()),\n\tscrollBeyondLastColumn: register(new EditorIntOption(\n\t\tEditorOption.scrollBeyondLastColumn, 'scrollBeyondLastColumn',\n\t\t4, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{ description: nls.localize('scrollBeyondLastColumn', \"Controls the number of extra characters beyond which the editor will scroll horizontally.\") }\n\t)),\n\tscrollBeyondLastLine: register(new EditorBooleanOption(\n\t\tEditorOption.scrollBeyondLastLine, 'scrollBeyondLastLine', true,\n\t\t{ description: nls.localize('scrollBeyondLastLine', \"Controls whether the editor will scroll beyond the last line.\") }\n\t)),\n\tscrollOnMiddleClick: register(new EditorBooleanOption(\n\t\tEditorOption.scrollOnMiddleClick, 'scrollOnMiddleClick', false,\n\t\t{ description: nls.localize('scrollOnMiddleClick', \"Controls whether the editor will scroll when the middle button is pressed.\") }\n\t)),\n\tscrollPredominantAxis: register(new EditorBooleanOption(\n\t\tEditorOption.scrollPredominantAxis, 'scrollPredominantAxis', true,\n\t\t{ description: nls.localize('scrollPredominantAxis', \"Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.\") }\n\t)),\n\tselectionClipboard: register(new EditorBooleanOption(\n\t\tEditorOption.selectionClipboard, 'selectionClipboard', true,\n\t\t{\n\t\t\tdescription: nls.localize('selectionClipboard', \"Controls whether the Linux primary clipboard should be supported.\"),\n\t\t\tincluded: platform.isLinux\n\t\t}\n\t)),\n\tselectionHighlight: register(new EditorBooleanOption(\n\t\tEditorOption.selectionHighlight, 'selectionHighlight', true,\n\t\t{ description: nls.localize('selectionHighlight', \"Controls whether the editor should highlight matches similar to the selection.\") }\n\t)),\n\tselectionHighlightMaxLength: register(new EditorIntOption(\n\t\tEditorOption.selectionHighlightMaxLength, 'selectionHighlightMaxLength',\n\t\t200, 0, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{ description: nls.localize('selectionHighlightMaxLength', \"Controls how many characters can be in the selection before similiar matches are not highlighted. Set to zero for unlimited.\") }\n\t)),\n\tselectionHighlightMultiline: register(new EditorBooleanOption(\n\t\tEditorOption.selectionHighlightMultiline, 'selectionHighlightMultiline', false,\n\t\t{ description: nls.localize('selectionHighlightMultiline', \"Controls whether the editor should highlight selection matches that span multiple lines.\") }\n\t)),\n\tselectOnLineNumbers: register(new EditorBooleanOption(\n\t\tEditorOption.selectOnLineNumbers, 'selectOnLineNumbers', true,\n\t)),\n\tshowFoldingControls: register(new EditorStringEnumOption(\n\t\tEditorOption.showFoldingControls, 'showFoldingControls',\n\t\t'mouseover' as 'always' | 'never' | 'mouseover',\n\t\t['always', 'never', 'mouseover'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('showFoldingControls.always', \"Always show the folding controls.\"),\n\t\t\t\tnls.localize('showFoldingControls.never', \"Never show the folding controls and reduce the gutter size.\"),\n\t\t\t\tnls.localize('showFoldingControls.mouseover', \"Only show the folding controls when the mouse is over the gutter.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('showFoldingControls', \"Controls when the folding controls on the gutter are shown.\")\n\t\t}\n\t)),\n\tshowUnused: register(new EditorBooleanOption(\n\t\tEditorOption.showUnused, 'showUnused', true,\n\t\t{ description: nls.localize('showUnused', \"Controls fading out of unused code.\") }\n\t)),\n\tshowDeprecated: register(new EditorBooleanOption(\n\t\tEditorOption.showDeprecated, 'showDeprecated', true,\n\t\t{ description: nls.localize('showDeprecated', \"Controls strikethrough deprecated variables.\") }\n\t)),\n\tinlayHints: register(new EditorInlayHints()),\n\tsnippetSuggestions: register(new EditorStringEnumOption(\n\t\tEditorOption.snippetSuggestions, 'snippetSuggestions',\n\t\t'inline' as 'top' | 'bottom' | 'inline' | 'none',\n\t\t['top', 'bottom', 'inline', 'none'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('snippetSuggestions.top', \"Show snippet suggestions on top of other suggestions.\"),\n\t\t\t\tnls.localize('snippetSuggestions.bottom', \"Show snippet suggestions below other suggestions.\"),\n\t\t\t\tnls.localize('snippetSuggestions.inline', \"Show snippets suggestions with other suggestions.\"),\n\t\t\t\tnls.localize('snippetSuggestions.none', \"Do not show snippet suggestions.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('snippetSuggestions', \"Controls whether snippets are shown with other suggestions and how they are sorted.\")\n\t\t}\n\t)),\n\tsmartSelect: register(new SmartSelect()),\n\tsmoothScrolling: register(new EditorBooleanOption(\n\t\tEditorOption.smoothScrolling, 'smoothScrolling', false,\n\t\t{ description: nls.localize('smoothScrolling', \"Controls whether the editor will scroll using an animation.\") }\n\t)),\n\tstopRenderingLineAfter: register(new EditorIntOption(\n\t\tEditorOption.stopRenderingLineAfter, 'stopRenderingLineAfter',\n\t\t10000, -1, Constants.MAX_SAFE_SMALL_INTEGER,\n\t)),\n\tsuggest: register(new EditorSuggest()),\n\tinlineSuggest: register(new InlineEditorSuggest()),\n\tinlineCompletionsAccessibilityVerbose: register(new EditorBooleanOption(EditorOption.inlineCompletionsAccessibilityVerbose, 'inlineCompletionsAccessibilityVerbose', false,\n\t\t{ description: nls.localize('inlineCompletionsAccessibilityVerbose', \"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\") })),\n\tsuggestFontSize: register(new EditorIntOption(\n\t\tEditorOption.suggestFontSize, 'suggestFontSize',\n\t\t0, 0, 1000,\n\t\t{ markdownDescription: nls.localize('suggestFontSize', \"Font size for the suggest widget. When set to {0}, the value of {1} is used.\", '`0`', '`#editor.fontSize#`') }\n\t)),\n\tsuggestLineHeight: register(new EditorIntOption(\n\t\tEditorOption.suggestLineHeight, 'suggestLineHeight',\n\t\t0, 0, 1000,\n\t\t{ markdownDescription: nls.localize('suggestLineHeight', \"Line height for the suggest widget. When set to {0}, the value of {1} is used. The minimum value is 8.\", '`0`', '`#editor.lineHeight#`') }\n\t)),\n\tsuggestOnTriggerCharacters: register(new EditorBooleanOption(\n\t\tEditorOption.suggestOnTriggerCharacters, 'suggestOnTriggerCharacters', true,\n\t\t{ description: nls.localize('suggestOnTriggerCharacters', \"Controls whether suggestions should automatically show up when typing trigger characters.\") }\n\t)),\n\tsuggestSelection: register(new EditorStringEnumOption(\n\t\tEditorOption.suggestSelection, 'suggestSelection',\n\t\t'first' as 'first' | 'recentlyUsed' | 'recentlyUsedByPrefix',\n\t\t['first', 'recentlyUsed', 'recentlyUsedByPrefix'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('suggestSelection.first', \"Always select the first suggestion.\"),\n\t\t\t\tnls.localize('suggestSelection.recentlyUsed', \"Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently.\"),\n\t\t\t\tnls.localize('suggestSelection.recentlyUsedByPrefix', \"Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('suggestSelection', \"Controls how suggestions are pre-selected when showing the suggest list.\")\n\t\t}\n\t)),\n\ttabCompletion: register(new EditorStringEnumOption(\n\t\tEditorOption.tabCompletion, 'tabCompletion',\n\t\t'off' as 'on' | 'off' | 'onlySnippets',\n\t\t['on', 'off', 'onlySnippets'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('tabCompletion.on', \"Tab complete will insert the best matching suggestion when pressing tab.\"),\n\t\t\t\tnls.localize('tabCompletion.off', \"Disable tab completions.\"),\n\t\t\t\tnls.localize('tabCompletion.onlySnippets', \"Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('tabCompletion', \"Enables tab completions.\")\n\t\t}\n\t)),\n\ttabIndex: register(new EditorIntOption(\n\t\tEditorOption.tabIndex, 'tabIndex',\n\t\t0, -1, Constants.MAX_SAFE_SMALL_INTEGER\n\t)),\n\ttrimWhitespaceOnDelete: register(new EditorBooleanOption(\n\t\tEditorOption.trimWhitespaceOnDelete, 'trimWhitespaceOnDelete', false,\n\t\t{ description: nls.localize('trimWhitespaceOnDelete', \"Controls whether the editor will also delete the next line's indentation whitespace when deleting a newline.\") }\n\t)),\n\tunicodeHighlight: register(new UnicodeHighlight()),\n\tunusualLineTerminators: register(new EditorStringEnumOption(\n\t\tEditorOption.unusualLineTerminators, 'unusualLineTerminators',\n\t\t'prompt' as 'auto' | 'off' | 'prompt',\n\t\t['auto', 'off', 'prompt'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('unusualLineTerminators.auto', \"Unusual line terminators are automatically removed.\"),\n\t\t\t\tnls.localize('unusualLineTerminators.off', \"Unusual line terminators are ignored.\"),\n\t\t\t\tnls.localize('unusualLineTerminators.prompt', \"Unusual line terminators prompt to be removed.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('unusualLineTerminators', \"Remove unusual line terminators that might cause problems.\")\n\t\t}\n\t)),\n\tuseShadowDOM: register(new EditorBooleanOption(\n\t\tEditorOption.useShadowDOM, 'useShadowDOM', true\n\t)),\n\tuseTabStops: register(new EditorBooleanOption(\n\t\tEditorOption.useTabStops, 'useTabStops', true,\n\t\t{ description: nls.localize('useTabStops', \"Spaces and tabs are inserted and deleted in alignment with tab stops.\") }\n\t)),\n\twordBreak: register(new EditorStringEnumOption(\n\t\tEditorOption.wordBreak, 'wordBreak',\n\t\t'normal' as 'normal' | 'keepAll',\n\t\t['normal', 'keepAll'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('wordBreak.normal', \"Use the default line break rule.\"),\n\t\t\t\tnls.localize('wordBreak.keepAll', \"Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('wordBreak', \"Controls the word break rules used for Chinese/Japanese/Korean (CJK) text.\")\n\t\t}\n\t)),\n\twordSegmenterLocales: register(new WordSegmenterLocales()),\n\twordSeparators: register(new EditorStringOption(\n\t\tEditorOption.wordSeparators, 'wordSeparators', USUAL_WORD_SEPARATORS,\n\t\t{ description: nls.localize('wordSeparators', \"Characters that will be used as word separators when doing word related navigations or operations.\") }\n\t)),\n\twordWrap: register(new EditorStringEnumOption(\n\t\tEditorOption.wordWrap, 'wordWrap',\n\t\t'off' as 'off' | 'on' | 'wordWrapColumn' | 'bounded',\n\t\t['off', 'on', 'wordWrapColumn', 'bounded'] as const,\n\t\t{\n\t\t\tmarkdownEnumDescriptions: [\n\t\t\t\tnls.localize('wordWrap.off', \"Lines will never wrap.\"),\n\t\t\t\tnls.localize('wordWrap.on', \"Lines will wrap at the viewport width.\"),\n\t\t\t\tnls.localize({\n\t\t\t\t\tkey: 'wordWrap.wordWrapColumn',\n\t\t\t\t\tcomment: [\n\t\t\t\t\t\t'- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\n\t\t\t\t\t]\n\t\t\t\t}, \"Lines will wrap at `#editor.wordWrapColumn#`.\"),\n\t\t\t\tnls.localize({\n\t\t\t\t\tkey: 'wordWrap.bounded',\n\t\t\t\t\tcomment: [\n\t\t\t\t\t\t'- viewport means the edge of the visible window size.',\n\t\t\t\t\t\t'- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\n\t\t\t\t\t]\n\t\t\t\t}, \"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize({\n\t\t\t\tkey: 'wordWrap',\n\t\t\t\tcomment: [\n\t\t\t\t\t'- \\'off\\', \\'on\\', \\'wordWrapColumn\\' and \\'bounded\\' refer to values the setting can take and should not be localized.',\n\t\t\t\t\t'- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\n\t\t\t\t]\n\t\t\t}, \"Controls how lines should wrap.\")\n\t\t}\n\t)),\n\twordWrapBreakAfterCharacters: register(new EditorStringOption(\n\t\tEditorOption.wordWrapBreakAfterCharacters, 'wordWrapBreakAfterCharacters',\n\t\t// allow-any-unicode-next-line\n\t\t' \\t})]?|/&.,;¢°′″‰℃、。。、¢,.:;?!%・・ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ァィゥェォャュョッー”〉》」』】〕)]}」',\n\t)),\n\twordWrapBreakBeforeCharacters: register(new EditorStringOption(\n\t\tEditorOption.wordWrapBreakBeforeCharacters, 'wordWrapBreakBeforeCharacters',\n\t\t// allow-any-unicode-next-line\n\t\t'([{‘“〈《「『【〔([{「£¥$£¥++'\n\t)),\n\twordWrapColumn: register(new EditorIntOption(\n\t\tEditorOption.wordWrapColumn, 'wordWrapColumn',\n\t\t80, 1, Constants.MAX_SAFE_SMALL_INTEGER,\n\t\t{\n\t\t\tmarkdownDescription: nls.localize({\n\t\t\t\tkey: 'wordWrapColumn',\n\t\t\t\tcomment: [\n\t\t\t\t\t'- `editor.wordWrap` refers to a different setting and should not be localized.',\n\t\t\t\t\t'- \\'wordWrapColumn\\' and \\'bounded\\' refer to values the different setting can take and should not be localized.'\n\t\t\t\t]\n\t\t\t}, \"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.\")\n\t\t}\n\t)),\n\twordWrapOverride1: register(new EditorStringEnumOption(\n\t\tEditorOption.wordWrapOverride1, 'wordWrapOverride1',\n\t\t'inherit' as 'off' | 'on' | 'inherit',\n\t\t['off', 'on', 'inherit'] as const\n\t)),\n\twordWrapOverride2: register(new EditorStringEnumOption(\n\t\tEditorOption.wordWrapOverride2, 'wordWrapOverride2',\n\t\t'inherit' as 'off' | 'on' | 'inherit',\n\t\t['off', 'on', 'inherit'] as const\n\t)),\n\twrapOnEscapedLineFeeds: register(new EditorBooleanOption(\n\t\tEditorOption.wrapOnEscapedLineFeeds, 'wrapOnEscapedLineFeeds', false,\n\t\t{ markdownDescription: nls.localize('wrapOnEscapedLineFeeds', \"Controls whether literal `\\\\n` shall trigger a wordWrap when `#editor.wordWrap#` is enabled.\\n\\nFor example:\\n```c\\nchar* str=\\\"hello\\\\nworld\\\"\\n```\\nwill be displayed as\\n```c\\nchar* str=\\\"hello\\\\n\\n world\\\"\\n```\") }\n\t)),\n\n\t// Leave these at the end (because they have dependencies!)\n\teffectiveCursorStyle: register(new EffectiveCursorStyle()),\n\teditorClassName: register(new EditorClassName()),\n\tdefaultColorDecorators: register(new EditorStringEnumOption(\n\t\tEditorOption.defaultColorDecorators, 'defaultColorDecorators', 'auto' as 'auto' | 'always' | 'never',\n\t\t['auto', 'always', 'never'] as const,\n\t\t{\n\t\t\tenumDescriptions: [\n\t\t\t\tnls.localize('editor.defaultColorDecorators.auto', \"Show default color decorators only when no extension provides colors decorators.\"),\n\t\t\t\tnls.localize('editor.defaultColorDecorators.always', \"Always show default color decorators.\"),\n\t\t\t\tnls.localize('editor.defaultColorDecorators.never', \"Never show default color decorators.\"),\n\t\t\t],\n\t\t\tdescription: nls.localize('defaultColorDecorators', \"Controls whether inline color decorations should be shown using the default document color provider.\")\n\t\t}\n\t)),\n\tpixelRatio: register(new EditorPixelRatio()),\n\ttabFocusMode: register(new EditorBooleanOption(EditorOption.tabFocusMode, 'tabFocusMode', false,\n\t\t{ markdownDescription: nls.localize('tabFocusMode', \"Controls whether the editor receives tabs or defers them to the workbench for navigation.\") }\n\t)),\n\tlayoutInfo: register(new EditorLayoutInfoComputer()),\n\twrappingInfo: register(new EditorWrappingInfoComputer()),\n\twrappingIndent: register(new WrappingIndentOption()),\n\twrappingStrategy: register(new WrappingStrategy()),\n\teffectiveEditContextEnabled: register(new EffectiveEditContextEnabled()),\n\teffectiveAllowVariableFonts: register(new EffectiveAllowVariableFonts())\n};\n\ntype EditorOptionsType = typeof EditorOptions;\ntype FindEditorOptionsKeyById<T extends EditorOption> = { [K in keyof EditorOptionsType]: EditorOptionsType[K]['id'] extends T ? K : never }[keyof EditorOptionsType];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ComputedEditorOptionValue<T extends IEditorOption<any, any>> = T extends IEditorOption<any, infer R> ? R : never;\nexport type FindComputedEditorOptionValueById<T extends EditorOption> = NonNullable<ComputedEditorOptionValue<EditorOptionsType[FindEditorOptionsKeyById<T>]>>;\n\nexport type MouseMiddleClickAction = 'default' | 'openLink' | 'ctrlLeftClick';\n"]}