diff --git a/src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts b/src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts index 480810b4e7865e44c9a0096eb3373e076f61a3da..b99637468fec74b0c11f93a7eda06c61aa13cace 100644 --- a/src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts +++ b/src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts @@ -27,7 +27,7 @@ export class LineNumbersOverlay extends DynamicViewOverlay { private _renderRelativeLineNumbers: boolean; private _lineNumbersLeft: number; private _lineNumbersWidth: number; - private _lineNumberInterval: number | { interval: number, showCurrentLineNumber: boolean }; + private _lineNumberInterval: { interval: number, showCurrentLineNumber: boolean }; private _lastCursorModelPosition: Position; private _renderResult: string[]; @@ -146,15 +146,8 @@ export class LineNumbersOverlay extends DynamicViewOverlay { } private _inInterval(lineNumber: number): boolean { - let inInterval = false; - - if (typeof this._lineNumberInterval === 'object') { - inInterval = lineNumber % this._lineNumberInterval.interval === 0 - || (this._lineNumberInterval.showCurrentLineNumber && this._lastCursorModelPosition.lineNumber === lineNumber); - } else if (typeof this._lineNumberInterval === 'number') { - inInterval = lineNumber % this._lineNumberInterval === 0; - } - return inInterval; + return lineNumber % this._lineNumberInterval.interval === 0 + || (this._lineNumberInterval.showCurrentLineNumber && this._lastCursorModelPosition.lineNumber === lineNumber); } public render(startLineNumber: number, lineNumber: number): string { diff --git a/src/vs/editor/common/config/commonEditorConfig.ts b/src/vs/editor/common/config/commonEditorConfig.ts index 3212d13d509afa3afe4478b70e70e71aa3b61a39..49204382ce38f6848149a74883feb78f0a93588b 100644 --- a/src/vs/editor/common/config/commonEditorConfig.ts +++ b/src/vs/editor/common/config/commonEditorConfig.ts @@ -208,28 +208,20 @@ const editorConfiguration: IConfigurationNode = { 'description': nls.localize('lineNumbers', "Controls the display of line numbers. Possible values are 'on', 'off', and 'relative'. 'relative' shows the line count from the current cursor position.") }, 'editor.lineNumberInterval': { - 'anyOf': [ - { + 'type': 'object', + properties: { + interval: { type: 'number', 'minimum': 1, + default: EDITOR_DEFAULTS.viewInfo.lineNumberInterval, + description: nls.localize('lineNumberInterval.interval', "Controls the interval at which line numbers are shown.") }, - { - type: 'object', - properties: { - interval: { - type: 'number', - 'minimum': 1, - default: EDITOR_DEFAULTS.viewInfo.lineNumberInterval, - description: nls.localize('lineNumberInterval.interval', "Controls the interval at which line numbers are shown.") - }, - showCurrentLineNumber: { - type: 'boolean', - default: false, - description: nls.localize('lineNumberInterval.showCurrentLineNumber', "Display the line number for the current cursor position.") - } - } + showCurrentLineNumber: { + type: 'boolean', + default: false, + description: nls.localize('lineNumberInterval.showCurrentLineNumber', "Display the line number for the current cursor position.") } - ], + }, 'default': EDITOR_DEFAULTS.viewInfo.lineNumberInterval, 'description': nls.localize('lineNumberInterval', "Controls the interval at which line numbers are shown..") }, diff --git a/src/vs/editor/common/config/editorOptions.ts b/src/vs/editor/common/config/editorOptions.ts index 8bc4efd3b1d51b1218343300197cad2cecfb22b6..73b6a71a265d983a19e581871a0876428333fab2 100644 --- a/src/vs/editor/common/config/editorOptions.ts +++ b/src/vs/editor/common/config/editorOptions.ts @@ -165,7 +165,7 @@ export interface IEditorOptions { * Controls the interval at which line numbers are rendered. * Defaults to 1. */ - lineNumberInterval?: number | { interval: number, showCurrentLineNumber: boolean }; + lineNumberInterval?: { interval: number, showCurrentLineNumber: boolean }; /** * Should the corresponding line be selected when clicking on the line number? * Defaults to true. @@ -767,7 +767,7 @@ export interface InternalEditorViewOptions { readonly renderCustomLineNumbers: (lineNumber: number) => string; readonly renderRelativeLineNumbers: boolean; readonly selectOnLineNumbers: boolean; - readonly lineNumberInterval: number | { interval: number, showCurrentLineNumber: boolean }; + readonly lineNumberInterval: { interval: number, showCurrentLineNumber: boolean }; readonly glyphMargin: boolean; readonly revealHorizontalRightPadding: number; readonly roundedSelection: boolean; @@ -1184,16 +1184,7 @@ export class InternalEditorOptions { ); } - private static _equalsLineNumberInterval(a: number | { interval: number, showCurrentLineNumber: boolean }, b: number | { interval: number, showCurrentLineNumber: boolean }): boolean { - if (typeof a === 'number') { - if (typeof b !== 'number') { - return false; - } - return a === b; - } - if (typeof b === 'number') { - return false; - } + private static _equalsLineNumberInterval(a: { interval: number, showCurrentLineNumber: boolean }, b: { interval: number, showCurrentLineNumber: boolean }): boolean { return ( a.interval === b.interval && a.showCurrentLineNumber === b.showCurrentLineNumber @@ -1639,15 +1630,10 @@ export class EditorOptionsValidator { renderLineHighlight = _stringSet<'none' | 'gutter' | 'line' | 'all'>(opts.renderLineHighlight, defaults.renderLineHighlight, ['none', 'gutter', 'line', 'all']); } - let lineNumberInterval: number | { interval: number, showCurrentLineNumber: boolean }; - if (typeof opts.lineNumberInterval === 'object') { - lineNumberInterval = { - interval: _clampedInt(opts.lineNumberInterval, 1, 1, Constants.MAX_UINT_32), - ...opts.lineNumberInterval - }; - } else { - lineNumberInterval = _clampedInt(opts.lineNumberInterval, 1, 1, Constants.MAX_UINT_32) - } + let lineNumberInterval = { + interval: _clampedInt(opts.lineNumberInterval, 1, 1, Constants.MAX_UINT_32), + ...opts.lineNumberInterval + }; const mouseWheelScrollSensitivity = _float(opts.mouseWheelScrollSensitivity, defaults.scrollbar.mouseWheelScrollSensitivity); const scrollbar = this._sanitizeScrollbarOpts(opts.scrollbar, defaults.scrollbar, mouseWheelScrollSensitivity); diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 36091805c1019e61a8f6728c5c4b7f4efc834a17..0d5e854032bd6c7d6bdc9e5d173990244c0f9f70 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -2750,7 +2750,7 @@ declare module monaco.editor { * Controls the interval at which line numbers are rendered. * Defaults to 1. */ - lineNumberInterval?: number | { + lineNumberInterval?: { interval: number; showCurrentLineNumber: boolean; }; @@ -3288,7 +3288,7 @@ declare module monaco.editor { readonly renderCustomLineNumbers: (lineNumber: number) => string; readonly renderRelativeLineNumbers: boolean; readonly selectOnLineNumbers: boolean; - readonly lineNumberInterval: number | { + readonly lineNumberInterval: { interval: number; showCurrentLineNumber: boolean; };