未验证 提交 3d662dd0 编写于 作者: A Alexandru Dima 提交者: GitHub

Merge pull request #64667 from MrZephyr17/eof-nl

Suppress display of end-of-file newline as blank line
......@@ -23,6 +23,7 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
private _lineHeight: number;
private _renderLineNumbers: RenderLineNumbersType;
private _renderCustomLineNumbers: ((lineNumber: number) => string) | null;
private _renderFinalNewline: boolean;
private _lineNumbersLeft: number;
private _lineNumbersWidth: number;
private _lastCursorModelPosition: Position;
......@@ -44,6 +45,7 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
this._lineHeight = config.lineHeight;
this._renderLineNumbers = config.viewInfo.renderLineNumbers;
this._renderCustomLineNumbers = config.viewInfo.renderCustomLineNumbers;
this._renderFinalNewline = config.viewInfo.renderFinalNewline;
this._lineNumbersLeft = config.layoutInfo.lineNumbersLeft;
this._lineNumbersWidth = config.layoutInfo.lineNumbersWidth;
}
......@@ -97,6 +99,15 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
}
let modelLineNumber = modelPosition.lineNumber;
if (!this._renderFinalNewline) {
const lineCount = this._context.model.getLineCount();
const lineContent = this._context.model.getLineContent(modelLineNumber);
if (modelLineNumber === lineCount && lineContent === '') {
return '';
}
}
if (this._renderCustomLineNumbers) {
return this._renderCustomLineNumbers(modelLineNumber);
}
......
......@@ -264,6 +264,11 @@ const editorConfiguration: IConfigurationNode = {
'default': 'on',
'description': nls.localize('lineNumbers', "Controls the display of line numbers.")
},
'editor.renderFinalNewline': {
'type': 'boolean',
'default': EDITOR_DEFAULTS.viewInfo.renderFinalNewline,
'description': nls.localize('renderFinalNewline', "Render last line number when the file ends with a newline.")
},
'editor.rulers': {
'type': 'array',
'items': {
......
......@@ -248,6 +248,11 @@ export interface IEditorOptions {
* Defaults to true.
*/
lineNumbers?: 'on' | 'off' | 'relative' | 'interval' | ((lineNumber: number) => string);
/**
* Render last line number when the file ends with a newline.
* Defaults to true on Windows/Mac and to false on Linux.
*/
renderFinalNewline?: boolean;
/**
* Should the corresponding line be selected when clicking on the line number?
* Defaults to true.
......@@ -951,6 +956,7 @@ export interface InternalEditorViewOptions {
readonly ariaLabel: string;
readonly renderLineNumbers: RenderLineNumbersType;
readonly renderCustomLineNumbers: ((lineNumber: number) => string) | null;
readonly renderFinalNewline: boolean;
readonly selectOnLineNumbers: boolean;
readonly glyphMargin: boolean;
readonly revealHorizontalRightPadding: number;
......@@ -1258,6 +1264,7 @@ export class InternalEditorOptions {
&& a.ariaLabel === b.ariaLabel
&& a.renderLineNumbers === b.renderLineNumbers
&& a.renderCustomLineNumbers === b.renderCustomLineNumbers
&& a.renderFinalNewline === b.renderFinalNewline
&& a.selectOnLineNumbers === b.selectOnLineNumbers
&& a.glyphMargin === b.glyphMargin
&& a.revealHorizontalRightPadding === b.revealHorizontalRightPadding
......@@ -1995,6 +2002,7 @@ export class EditorOptionsValidator {
ariaLabel: _string(opts.ariaLabel, defaults.ariaLabel),
renderLineNumbers: renderLineNumbers,
renderCustomLineNumbers: renderCustomLineNumbers,
renderFinalNewline: _boolean(opts.renderFinalNewline, defaults.renderFinalNewline),
selectOnLineNumbers: _boolean(opts.selectOnLineNumbers, defaults.selectOnLineNumbers),
glyphMargin: _boolean(opts.glyphMargin, defaults.glyphMargin),
revealHorizontalRightPadding: _clampedInt(opts.revealHorizontalRightPadding, defaults.revealHorizontalRightPadding, 0, 1000),
......@@ -2115,6 +2123,7 @@ export class InternalEditorOptionsFactory {
ariaLabel: (accessibilityIsOff ? nls.localize('accessibilityOffAriaLabel', "The editor is not accessible at this time. Press Alt+F1 for options.") : opts.viewInfo.ariaLabel),
renderLineNumbers: opts.viewInfo.renderLineNumbers,
renderCustomLineNumbers: opts.viewInfo.renderCustomLineNumbers,
renderFinalNewline: opts.viewInfo.renderFinalNewline,
selectOnLineNumbers: opts.viewInfo.selectOnLineNumbers,
glyphMargin: opts.viewInfo.glyphMargin,
revealHorizontalRightPadding: opts.viewInfo.revealHorizontalRightPadding,
......@@ -2577,6 +2586,7 @@ export const EDITOR_DEFAULTS: IValidatedEditorOptions = {
ariaLabel: nls.localize('editorViewAccessibleLabel', "Editor content"),
renderLineNumbers: RenderLineNumbersType.On,
renderCustomLineNumbers: null,
renderFinalNewline: (platform.isLinux ? false : true),
selectOnLineNumbers: true,
glyphMargin: true,
revealHorizontalRightPadding: 30,
......
......@@ -2582,6 +2582,11 @@ declare namespace monaco.editor {
* Defaults to true.
*/
lineNumbers?: 'on' | 'off' | 'relative' | 'interval' | ((lineNumber: number) => string);
/**
* Render last line number when the file ends with a newline.
* Defaults to true on Windows/Mac and to false on Linux.
*/
renderFinalNewline?: boolean;
/**
* Should the corresponding line be selected when clicking on the line number?
* Defaults to true.
......@@ -3219,6 +3224,7 @@ declare namespace monaco.editor {
readonly ariaLabel: string;
readonly renderLineNumbers: RenderLineNumbersType;
readonly renderCustomLineNumbers: ((lineNumber: number) => string) | null;
readonly renderFinalNewline: boolean;
readonly selectOnLineNumbers: boolean;
readonly glyphMargin: boolean;
readonly revealHorizontalRightPadding: number;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册