Document the line-number counting behavior (#27386)

Ref #27377
This commit is contained in:
wxiaoguang 2023-10-02 15:23:18 +08:00 committed by GitHub
parent 4999d909a6
commit e4313feefd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -488,8 +488,13 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
} else { } else {
buf, _ := io.ReadAll(rd) buf, _ := io.ReadAll(rd)
// empty: 0 lines; "a": one line; "a\n": two lines; "a\nb": two lines; // The Open Group Base Specification: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html
// the NumLines is only used for the display on the UI: "xxx lines" // empty: 0 lines; "a": 1 line, 1 incomplete-line; "a\n": 1 line; "a\nb": 1 line, 1 incomplete-line;
// Gitea uses the definition (like most modern editors):
// empty: 0 lines; "a": 1 line; "a\n": 2 lines; "a\nb": 2 lines;
// When rendering, the last empty line is not rendered in UI, while the line-number is still counted, to tell users that the file contains a trailing EOL.
// To make the UI more consistent, it could use an icon mark to indicate that there is no trailing EOL, and show line-number as the rendered lines.
// This NumLines is only used for the display on the UI: "xxx lines"
if len(buf) == 0 { if len(buf) == 0 {
ctx.Data["NumLines"] = 0 ctx.Data["NumLines"] = 0
} else { } else {