Skip to content

Commit

Permalink
Merge pull request microsoft#37120 from DdWr/feature/line_number_inte…
Browse files Browse the repository at this point in the history
…rval_setting

Add line number interval setting
  • Loading branch information
alexdima authored Nov 14, 2017
2 parents af52203 + 110bfd6 commit 0e0e347
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 9 deletions.
14 changes: 12 additions & 2 deletions src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
private _renderCustomLineNumbers: (lineNumber: number) => string;
private _lineNumbersLeft: number;
private _lineNumbersWidth: number;

private _lastCursorModelPosition: Position;
private _renderResult: string[];

Expand Down Expand Up @@ -68,7 +67,7 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
const primaryViewPosition = e.selections[0].getPosition();
this._lastCursorModelPosition = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(primaryViewPosition);

if (this._renderLineNumbers === RenderLineNumbersType.Relative) {
if (this._renderLineNumbers === RenderLineNumbersType.Relative || this._renderLineNumbers === RenderLineNumbersType.Interval) {
return true;
}
return false;
Expand Down Expand Up @@ -113,6 +112,16 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
return String(diff);
}

if (this._renderLineNumbers === RenderLineNumbersType.Interval) {
if (this._lastCursorModelPosition.lineNumber === modelLineNumber) {
return String(modelLineNumber);
}
if (modelLineNumber % 10 === 0) {
return String(modelLineNumber);
}
return '';
}

return String(modelLineNumber);
}

Expand All @@ -132,6 +141,7 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
let lineIndex = lineNumber - visibleStartLineNumber;

let renderLineNumber = this._getLineRenderLineNumber(lineNumber);

if (renderLineNumber) {
output[lineIndex] = (
common
Expand Down
5 changes: 3 additions & 2 deletions src/vs/editor/common/config/commonEditorConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,11 +203,12 @@ const editorConfiguration: IConfigurationNode = {
},
'editor.lineNumbers': {
'type': 'string',
'enum': ['off', 'on', 'relative'],
'enum': ['off', 'on', 'relative', 'interval'],
'enumDescriptions': [
nls.localize('lineNumbers.off', "Line numbers are not rendered."),
nls.localize('lineNumbers.on', "Line numbers are rendered as absolute number."),
nls.localize('lineNumbers.relative', "Line numbers are rendered as distance in lines to cursor position.")
nls.localize('lineNumbers.relative', "Line numbers are rendered as distance in lines to cursor position."),
nls.localize('lineNumbers.interval', "Line numbers are rendered every 10 lines.")
],
'default': 'on',
'description': nls.localize('lineNumbers', "Controls the display of line numbers. Possible values are 'on', 'off', and 'relative'.")
Expand Down
7 changes: 5 additions & 2 deletions src/vs/editor/common/config/editorOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ export interface IEditorOptions {
* Otherwise, line numbers will not be rendered.
* Defaults to true.
*/
lineNumbers?: 'on' | 'off' | 'relative' | ((lineNumber: number) => string);
lineNumbers?: 'on' | 'off' | 'relative' | 'interval' | ((lineNumber: number) => string);
/**
* Should the corresponding line be selected when clicking on the line number?
* Defaults to true.
Expand Down Expand Up @@ -757,7 +757,8 @@ export const enum RenderLineNumbersType {
Off = 0,
On = 1,
Relative = 2,
Custom = 3
Interval = 3,
Custom = 4
}

export interface InternalEditorViewOptions {
Expand Down Expand Up @@ -1579,6 +1580,8 @@ export class EditorOptionsValidator {
if (typeof lineNumbers === 'function') {
renderLineNumbers = RenderLineNumbersType.Custom;
renderCustomLineNumbers = lineNumbers;
} else if (lineNumbers === 'interval') {
renderLineNumbers = RenderLineNumbersType.Interval;
} else if (lineNumbers === 'relative') {
renderLineNumbers = RenderLineNumbersType.Relative;
} else if (lineNumbers === 'on') {
Expand Down
3 changes: 2 additions & 1 deletion src/vs/editor/standalone/browser/standaloneEditor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,8 @@ enum RenderLineNumbersType {
Off = 0,
On = 1,
Relative = 2,
Custom = 3
Interval = 3,
Custom = 4
}

/**
Expand Down
5 changes: 3 additions & 2 deletions src/vs/monaco.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2498,7 +2498,7 @@ declare module monaco.editor {
* Otherwise, line numbers will not be rendered.
* Defaults to true.
*/
lineNumbers?: 'on' | 'off' | 'relative' | ((lineNumber: number) => string);
lineNumbers?: 'on' | 'off' | 'relative' | 'interval' | ((lineNumber: number) => string);
/**
* Should the corresponding line be selected when clicking on the line number?
* Defaults to true.
Expand Down Expand Up @@ -3028,7 +3028,8 @@ declare module monaco.editor {
Off = 0,
On = 1,
Relative = 2,
Custom = 3,
Interval = 3,
Custom = 4,
}

export interface InternalEditorViewOptions {
Expand Down

0 comments on commit 0e0e347

Please sign in to comment.