Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor editor options #80469

Merged
merged 29 commits into from
Sep 6, 2019
Merged
Changes from 1 commit
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
2a72088
Introduce a new way to manage editor options
alexdima Aug 30, 2019
75ffa8b
- Add a typed way to read options
alexdima Sep 2, 2019
363b976
Convert more editor options
alexdima Sep 2, 2019
9ab08c2
Adopt conditional types for editor options reading
alexdima Sep 2, 2019
16c1772
renames
alexdima Sep 2, 2019
844c90a
Lift editor options key name to a generic
alexdima Sep 2, 2019
0512050
Migrate more editor options
alexdima Sep 3, 2019
802826e
Move more editor options
alexdima Sep 3, 2019
e787da1
Merge remote-tracking branch 'origin/master' into alex/editor-options
alexdima Sep 4, 2019
2adf01f
Convert more editor options
alexdima Sep 5, 2019
9e39427
Add test for eventing
alexdima Sep 5, 2019
dd0fe9e
Migrate computed editor options
alexdima Sep 5, 2019
27adb78
Migrate fontInfo to the new editor option format
alexdima Sep 5, 2019
e9581bc
Add EditorFontSize
alexdima Sep 5, 2019
bcd154c
Keep mixin of the raw options
alexdima Sep 5, 2019
ad3289c
Remove IEditorOption.equals
alexdima Sep 5, 2019
b11d96f
Simplify editor options
alexdima Sep 6, 2019
d625a4b
Merge remote-tracking branch 'origin/master' into alex/editor-options
alexdima Sep 6, 2019
b01cb4f
Fix default value
alexdima Sep 6, 2019
61d0aa4
Fix tests
alexdima Sep 6, 2019
292f3ab
Reorder options
alexdima Sep 6, 2019
959c017
Rearrange editor options
alexdima Sep 6, 2019
744eb29
Simplify EditorLayoutInfoComputer
alexdima Sep 6, 2019
fa66d15
:lipstick:
alexdima Sep 6, 2019
7af9255
More editor options adoption
alexdima Sep 6, 2019
e766914
Migrate editor options schemas for booleans
alexdima Sep 6, 2019
b71b8a4
Move schemas next to the editor options
alexdima Sep 6, 2019
c84821f
:lipstick:
alexdima Sep 6, 2019
7b4c755
Merge remote-tracking branch 'origin/master' into alex/editor-options
alexdima Sep 6, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
More editor options adoption
alexdima committed Sep 6, 2019

Verified

This commit was signed with the committer’s verified signature.
Dr-Blank Dr.Blank
commit 7af9255d0ba75583f61df2d48cb0362d41cc100a
227 changes: 93 additions & 134 deletions src/vs/editor/common/config/editorOptions.ts

Large diffs are not rendered by default.

40 changes: 20 additions & 20 deletions src/vs/editor/common/standalone/standaloneEnums.ts
Original file line number Diff line number Diff line change
@@ -520,26 +520,26 @@ export enum EditorOption {
snippetSuggestions = 77,
smoothScrolling = 78,
stopRenderingLineAfter = 79,
suggestFontSize = 80,
suggestLineHeight = 81,
suggestOnTriggerCharacters = 82,
suggestSelection = 83,
tabCompletion = 84,
useTabStops = 85,
wordSeparators = 86,
wordWrap = 87,
wordWrapBreakAfterCharacters = 88,
wordWrapBreakBeforeCharacters = 89,
wordWrapBreakObtrusiveCharacters = 90,
wordWrapColumn = 91,
wordWrapMinified = 92,
wrappingIndent = 93,
ariaLabel = 94,
disableMonospaceOptimizations = 95,
editorClassName = 96,
pixelRatio = 97,
tabFocusMode = 98,
suggest = 99,
suggest = 80,
suggestFontSize = 81,
suggestLineHeight = 82,
suggestOnTriggerCharacters = 83,
suggestSelection = 84,
tabCompletion = 85,
useTabStops = 86,
wordSeparators = 87,
wordWrap = 88,
wordWrapBreakAfterCharacters = 89,
wordWrapBreakBeforeCharacters = 90,
wordWrapBreakObtrusiveCharacters = 91,
wordWrapColumn = 92,
wordWrapMinified = 93,
wrappingIndent = 94,
ariaLabel = 95,
disableMonospaceOptimizations = 96,
editorClassName = 97,
pixelRatio = 98,
tabFocusMode = 99,
layoutInfo = 100,
wrappingInfo = 101
}
7 changes: 4 additions & 3 deletions src/vs/editor/contrib/suggest/completionModel.ts
Original file line number Diff line number Diff line change
@@ -60,7 +60,8 @@ export class CompletionModel {
column: number,
lineContext: LineContext,
wordDistance: WordDistance,
options: InternalSuggestOptions
options: InternalSuggestOptions,
snippetSuggestions: 'top' | 'bottom' | 'inline' | 'none'
) {
this._items = items;
this._column = column;
@@ -69,9 +70,9 @@ export class CompletionModel {
this._refilterKind = Refilter.All;
this._lineContext = lineContext;

if (options.snippets === 'top') {
if (snippetSuggestions === 'top') {
this._snippetCompareFn = CompletionModel._compareCompletionItemsSnippetsUp;
} else if (options.snippets === 'bottom') {
} else if (snippetSuggestions === 'bottom') {
this._snippetCompareFn = CompletionModel._compareCompletionItemsSnippetsDown;
}
}
6 changes: 4 additions & 2 deletions src/vs/editor/contrib/suggest/suggestModel.ts
Original file line number Diff line number Diff line change
@@ -389,9 +389,10 @@ export class SuggestModel implements IDisposable {

// kind filter and snippet sort rules
const suggestOptions = this._editor.getOption(EditorOption.suggest);
const snippetSuggestions = this._editor.getOption(EditorOption.snippetSuggestions);
let itemKindFilter = new Set<CompletionItemKind>();
let snippetSortOrder = SnippetSortOrder.Inline;
switch (suggestOptions.snippets) {
switch (snippetSuggestions) {
case 'top':
snippetSortOrder = SnippetSortOrder.Top;
break;
@@ -450,7 +451,8 @@ export class SuggestModel implements IDisposable {
characterCountDelta: ctx.column - this._context!.column
},
wordDistance,
this._editor.getOption(EditorOption.suggest)
this._editor.getOption(EditorOption.suggest),
this._editor.getOption(EditorOption.snippetSuggestions)
);

// store containers so that they can be disposed later
41 changes: 14 additions & 27 deletions src/vs/editor/contrib/suggest/test/completionModel.test.ts
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ import * as modes from 'vs/editor/common/modes';
import { CompletionModel } from 'vs/editor/contrib/suggest/completionModel';
import { CompletionItem, getSuggestionComparator, SnippetSortOrder } from 'vs/editor/contrib/suggest/suggest';
import { WordDistance } from 'vs/editor/contrib/suggest/wordDistance';
import { EditorOptions, InternalSuggestOptions } from 'vs/editor/common/config/editorOptions';
import { EditorOptions } from 'vs/editor/common/config/editorOptions';

export function createSuggestItem(label: string, overwriteBefore: number, kind = modes.CompletionItemKind.Property, incomplete: boolean = false, position: IPosition = { lineNumber: 1, column: 1 }, sortText?: string, filterText?: string): CompletionItem {
const suggestion: modes.CompletionItem = {
@@ -31,16 +31,6 @@ export function createSuggestItem(label: string, overwriteBefore: number, kind =

return new CompletionItem(position, suggestion, container, provider, undefined!);
}
const defaultInternalSuggestOptions: InternalSuggestOptions = {
filterGraceful: EditorOptions.suggest.defaultValue.filterGraceful,
snippets: EditorOptions.snippetSuggestions.defaultValue,
snippetsPreventQuickSuggestions: EditorOptions.suggest.defaultValue.snippetsPreventQuickSuggestions,
localityBonus: EditorOptions.suggest.defaultValue.localityBonus,
shareSuggestSelections: EditorOptions.suggest.defaultValue.shareSuggestSelections,
showIcons: EditorOptions.suggest.defaultValue.showIcons,
maxVisibleSuggestions: EditorOptions.suggest.defaultValue.maxVisibleSuggestions,
filteredTypes: EditorOptions.suggest.defaultValue.filteredTypes,
};
suite('CompletionModel', function () {


@@ -55,7 +45,7 @@ suite('CompletionModel', function () {
], 1, {
leadingLineContent: 'foo',
characterCountDelta: 0
}, WordDistance.None, defaultInternalSuggestOptions);
}, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue);
});

test('filtering - cached', function () {
@@ -86,7 +76,7 @@ suite('CompletionModel', function () {
], 1, {
leadingLineContent: 'foo',
characterCountDelta: 0
}, WordDistance.None, defaultInternalSuggestOptions);
}, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue);
assert.equal(incompleteModel.incomplete.size, 1);
});

@@ -95,7 +85,7 @@ suite('CompletionModel', function () {
const completeItem = createSuggestItem('foobar', 1, undefined, false, { lineNumber: 1, column: 2 });
const incompleteItem = createSuggestItem('foofoo', 1, undefined, true, { lineNumber: 1, column: 2 });

const model = new CompletionModel([completeItem, incompleteItem], 2, { leadingLineContent: 'f', characterCountDelta: 0 }, WordDistance.None, defaultInternalSuggestOptions);
const model = new CompletionModel([completeItem, incompleteItem], 2, { leadingLineContent: 'f', characterCountDelta: 0 }, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue);
assert.equal(model.incomplete.size, 1);
assert.equal(model.items.length, 2);

@@ -124,7 +114,7 @@ suite('CompletionModel', function () {
completeItem4,
completeItem5,
incompleteItem1,
], 2, { leadingLineContent: 'f', characterCountDelta: 0 }, WordDistance.None, defaultInternalSuggestOptions
], 2, { leadingLineContent: 'f', characterCountDelta: 0 }, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue
);
assert.equal(model.incomplete.size, 1);
assert.equal(model.items.length, 6);
@@ -148,7 +138,7 @@ suite('CompletionModel', function () {
], 1, {
leadingLineContent: ' <',
characterCountDelta: 0
}, WordDistance.None, defaultInternalSuggestOptions);
}, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue);

assert.equal(model.items.length, 4);

@@ -169,15 +159,14 @@ suite('CompletionModel', function () {
leadingLineContent: 's',
characterCountDelta: 0
}, WordDistance.None, {
snippets: 'top',
snippetsPreventQuickSuggestions: true,
filterGraceful: true,
localityBonus: false,
shareSuggestSelections: false,
showIcons: true,
maxVisibleSuggestions: 12,
filteredTypes: Object.create(null)
});
}, 'top');

assert.equal(model.items.length, 2);
const [a, b] = model.items;
@@ -197,15 +186,14 @@ suite('CompletionModel', function () {
leadingLineContent: 's',
characterCountDelta: 0
}, WordDistance.None, {
snippets: 'bottom',
snippetsPreventQuickSuggestions: true,
filterGraceful: true,
localityBonus: false,
shareSuggestSelections: false,
showIcons: true,
maxVisibleSuggestions: 12,
filteredTypes: Object.create(null)
});
}, 'bottom');

assert.equal(model.items.length, 2);
const [a, b] = model.items;
@@ -224,15 +212,14 @@ suite('CompletionModel', function () {
leadingLineContent: 's',
characterCountDelta: 0
}, WordDistance.None, {
snippets: 'inline',
snippetsPreventQuickSuggestions: true,
filterGraceful: true,
localityBonus: false,
shareSuggestSelections: false,
showIcons: true,
maxVisibleSuggestions: 12,
filteredTypes: Object.create(null)
});
}, 'inline');

assert.equal(model.items.length, 2);
const [a, b] = model.items;
@@ -249,7 +236,7 @@ suite('CompletionModel', function () {
model = new CompletionModel([item1, item2], 1, {
leadingLineContent: 'M',
characterCountDelta: 0
}, WordDistance.None, defaultInternalSuggestOptions);
}, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue);

assert.equal(model.items.length, 2);

@@ -269,7 +256,7 @@ suite('CompletionModel', function () {
model = new CompletionModel(items, 3, {
leadingLineContent: ' ',
characterCountDelta: 0
}, WordDistance.None, defaultInternalSuggestOptions);
}, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue);

assert.equal(model.items.length, 2);

@@ -288,7 +275,7 @@ suite('CompletionModel', function () {
], 1, {
leadingLineContent: '',
characterCountDelta: 0
}, WordDistance.None, defaultInternalSuggestOptions);
}, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue);

assert.equal(model.items.length, 5);

@@ -315,7 +302,7 @@ suite('CompletionModel', function () {
], 1, {
leadingLineContent: '',
characterCountDelta: 0
}, WordDistance.None, defaultInternalSuggestOptions);
}, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue);

// query gets longer, narrow down the narrow-down'ed-set from before
model.lineContext = { leadingLineContent: 'rlut', characterCountDelta: 4 };
@@ -337,7 +324,7 @@ suite('CompletionModel', function () {
], 1, {
leadingLineContent: '',
characterCountDelta: 0
}, WordDistance.None, defaultInternalSuggestOptions);
}, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue);

model.lineContext = { leadingLineContent: 'form', characterCountDelta: 4 };
assert.equal(model.items.length, 5);
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/

import * as assert from 'assert';
import { EditorLayoutInfo, EditorLayoutInfoComputer, RenderMinimap, EditorOption, InternalEditorMinimapOptions, InternalEditorScrollbarOptions, EditorOptions, RenderLineNumbersType, InternalEditorRenderLineNumbersOptions } from 'vs/editor/common/config/editorOptions';
import { EditorLayoutInfo, EditorLayoutInfoComputer, RenderMinimap, EditorOption, EditorMinimapOptions, InternalEditorScrollbarOptions, EditorOptions, RenderLineNumbersType, InternalEditorRenderLineNumbersOptions } from 'vs/editor/common/config/editorOptions';
import { ComputedEditorOptions } from 'vs/editor/common/config/commonEditorConfig';

interface IEditorLayoutProviderOpts {
@@ -43,7 +43,7 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => {
options._write(EditorOption.lineNumbersMinChars, input.lineNumbersMinChars);
options._write(EditorOption.lineDecorationsWidth, input.lineDecorationsWidth);
options._write(EditorOption.folding, false);
const minimapOptions: InternalEditorMinimapOptions = {
const minimapOptions: EditorMinimapOptions = {
enabled: input.minimap,
side: input.minimapSide,
renderCharacters: input.minimapRenderCharacters,
96 changes: 34 additions & 62 deletions src/vs/monaco.d.ts
Original file line number Diff line number Diff line change
@@ -2489,7 +2489,7 @@ declare namespace monaco.editor {
/**
* Controls if Find in Selection flag is turned on when multiple lines of text are selected in the editor.
*/
autoFindInSelection: boolean;
autoFindInSelection?: boolean;
addExtraSpaceOnTop?: boolean;
}

@@ -3229,21 +3229,11 @@ declare namespace monaco.editor {
UnderlineThin = 6
}

export interface InternalEditorFindOptions {
readonly seedSearchStringFromSelection: boolean;
readonly autoFindInSelection: boolean;
readonly addExtraSpaceOnTop: boolean;
}
export type EditorFindOptions = Readonly<Required<IEditorFindOptions>>;

export interface InternalGoToLocationOptions {
readonly multiple: 'peek' | 'gotoAndPeek' | 'goto';
}
export type GoToLocationOptions = Readonly<Required<IGotoLocationOptions>>;

export interface InternalEditorHoverOptions {
readonly enabled: boolean;
readonly delay: number;
readonly sticky: boolean;
}
export type EditorHoverOptions = Readonly<Required<IEditorHoverOptions>>;

/**
* A description for the overview ruler position.
@@ -3365,20 +3355,11 @@ declare namespace monaco.editor {
readonly overviewRuler: OverviewRulerPosition;
}

export type ValidEditorLightbulbOptions = Required<IEditorLightbulbOptions>;
export type EditorLightbulbOptions = Readonly<Required<IEditorLightbulbOptions>>;

export interface InternalEditorMinimapOptions {
readonly enabled: boolean;
readonly side: 'right' | 'left';
readonly showSlider: 'always' | 'mouseover';
readonly renderCharacters: boolean;
readonly maxColumn: number;
}
export type EditorMinimapOptions = Readonly<Required<IEditorMinimapOptions>>;

export interface InternalParameterHintOptions {
readonly enabled: boolean;
readonly cycle: boolean;
}
export type InternalParameterHintOptions = Readonly<Required<IEditorParameterHintOptions>>;

export type ValidQuickSuggestionsOptions = boolean | Readonly<Required<IQuickSuggestionsOptions>>;

@@ -3411,16 +3392,7 @@ declare namespace monaco.editor {
readonly verticalSliderSize: number;
}

export interface InternalSuggestOptions {
readonly filterGraceful: boolean;
readonly snippets: 'top' | 'bottom' | 'inline' | 'none';
readonly snippetsPreventQuickSuggestions: boolean;
readonly localityBonus: boolean;
readonly shareSuggestSelections: boolean;
readonly showIcons: boolean;
readonly maxVisibleSuggestions: number;
readonly filteredTypes: Record<string, boolean>;
}
export type InternalSuggestOptions = Readonly<Required<ISuggestOptions>>;

/**
* Describes how to indent wrapped lines.
@@ -3532,26 +3504,26 @@ declare namespace monaco.editor {
snippetSuggestions = 77,
smoothScrolling = 78,
stopRenderingLineAfter = 79,
suggestFontSize = 80,
suggestLineHeight = 81,
suggestOnTriggerCharacters = 82,
suggestSelection = 83,
tabCompletion = 84,
useTabStops = 85,
wordSeparators = 86,
wordWrap = 87,
wordWrapBreakAfterCharacters = 88,
wordWrapBreakBeforeCharacters = 89,
wordWrapBreakObtrusiveCharacters = 90,
wordWrapColumn = 91,
wordWrapMinified = 92,
wrappingIndent = 93,
ariaLabel = 94,
disableMonospaceOptimizations = 95,
editorClassName = 96,
pixelRatio = 97,
tabFocusMode = 98,
suggest = 99,
suggest = 80,
suggestFontSize = 81,
suggestLineHeight = 82,
suggestOnTriggerCharacters = 83,
suggestSelection = 84,
tabCompletion = 85,
useTabStops = 86,
wordSeparators = 87,
wordWrap = 88,
wordWrapBreakAfterCharacters = 89,
wordWrapBreakBeforeCharacters = 90,
wordWrapBreakObtrusiveCharacters = 91,
wordWrapColumn = 92,
wordWrapMinified = 93,
wrappingIndent = 94,
ariaLabel = 95,
disableMonospaceOptimizations = 96,
editorClassName = 97,
pixelRatio = 98,
tabFocusMode = 99,
layoutInfo = 100,
wrappingInfo = 101
}
@@ -3580,7 +3552,7 @@ declare namespace monaco.editor {
emptySelectionClipboard: IEditorOption<EditorOption.emptySelectionClipboard, boolean>;
extraEditorClassName: IEditorOption<EditorOption.extraEditorClassName, string>;
fastScrollSensitivity: IEditorOption<EditorOption.fastScrollSensitivity, number>;
find: IEditorOption<EditorOption.find, InternalEditorFindOptions>;
find: IEditorOption<EditorOption.find, any>;
fixedOverflowWidgets: IEditorOption<EditorOption.fixedOverflowWidgets, boolean>;
folding: IEditorOption<EditorOption.folding, boolean>;
foldingStrategy: IEditorOption<EditorOption.foldingStrategy, "auto" | "indentation">;
@@ -3592,10 +3564,10 @@ declare namespace monaco.editor {
formatOnPaste: IEditorOption<EditorOption.formatOnPaste, boolean>;
formatOnType: IEditorOption<EditorOption.formatOnType, boolean>;
glyphMargin: IEditorOption<EditorOption.glyphMargin, boolean>;
gotoLocation: IEditorOption<EditorOption.gotoLocation, InternalGoToLocationOptions>;
gotoLocation: IEditorOption<EditorOption.gotoLocation, any>;
hideCursorInOverviewRuler: IEditorOption<EditorOption.hideCursorInOverviewRuler, boolean>;
highlightActiveIndentGuide: IEditorOption<EditorOption.highlightActiveIndentGuide, boolean>;
hover: IEditorOption<EditorOption.hover, InternalEditorHoverOptions>;
hover: IEditorOption<EditorOption.hover, any>;
inDiffEditor: IEditorOption<EditorOption.inDiffEditor, boolean>;
letterSpacing: IEditorOption<EditorOption.letterSpacing, number>;
lightbulb: IEditorOption<EditorOption.lightbulb, any>;
@@ -3605,7 +3577,7 @@ declare namespace monaco.editor {
lineNumbersMinChars: IEditorOption<EditorOption.lineNumbersMinChars, number>;
links: IEditorOption<EditorOption.links, boolean>;
matchBrackets: IEditorOption<EditorOption.matchBrackets, boolean>;
minimap: IEditorOption<EditorOption.minimap, InternalEditorMinimapOptions>;
minimap: IEditorOption<EditorOption.minimap, any>;
mouseStyle: IEditorOption<EditorOption.mouseStyle, "text" | "default" | "copy">;
mouseWheelScrollSensitivity: IEditorOption<EditorOption.mouseWheelScrollSensitivity, number>;
mouseWheelZoom: IEditorOption<EditorOption.mouseWheelZoom, boolean>;
@@ -3614,7 +3586,7 @@ declare namespace monaco.editor {
occurrencesHighlight: IEditorOption<EditorOption.occurrencesHighlight, boolean>;
overviewRulerBorder: IEditorOption<EditorOption.overviewRulerBorder, boolean>;
overviewRulerLanes: IEditorOption<EditorOption.overviewRulerLanes, number>;
parameterHints: IEditorOption<EditorOption.parameterHints, InternalParameterHintOptions>;
parameterHints: IEditorOption<EditorOption.parameterHints, any>;
quickSuggestions: IEditorOption<EditorOption.quickSuggestions, any>;
quickSuggestionsDelay: IEditorOption<EditorOption.quickSuggestionsDelay, number>;
readOnly: IEditorOption<EditorOption.readOnly, boolean>;
@@ -3637,6 +3609,7 @@ declare namespace monaco.editor {
snippetSuggestions: IEditorOption<EditorOption.snippetSuggestions, "none" | "top" | "bottom" | "inline">;
smoothScrolling: IEditorOption<EditorOption.smoothScrolling, boolean>;
stopRenderingLineAfter: IEditorOption<EditorOption.stopRenderingLineAfter, number>;
suggest: IEditorOption<EditorOption.suggest, any>;
suggestFontSize: IEditorOption<EditorOption.suggestFontSize, number>;
suggestLineHeight: IEditorOption<EditorOption.suggestLineHeight, number>;
suggestOnTriggerCharacters: IEditorOption<EditorOption.suggestOnTriggerCharacters, boolean>;
@@ -3656,7 +3629,6 @@ declare namespace monaco.editor {
editorClassName: IEditorOption<EditorOption.editorClassName, string>;
pixelRatio: IEditorOption<EditorOption.pixelRatio, number>;
tabFocusMode: IEditorOption<EditorOption.tabFocusMode, boolean>;
suggest: IEditorOption<EditorOption.suggest, InternalSuggestOptions>;
layoutInfo: IEditorOption<EditorOption.layoutInfo, EditorLayoutInfo>;
wrappingInfo: IEditorOption<EditorOption.wrappingInfo, EditorWrappingInfo>;
};