diff --git a/cgit.c b/cgit.c index b0e1c44..ec40e1f 100644 --- a/cgit.c +++ b/cgit.c @@ -86,6 +86,8 @@ void config_cb(const char *name, const char *value) ctx.cfg.enable_log_filecount = atoi(value); else if (!strcmp(name, "enable-log-linecount")) ctx.cfg.enable_log_linecount = atoi(value); + else if (!strcmp(name, "enable-tree-linenumbers")) + ctx.cfg.enable_tree_linenumbers = atoi(value); else if (!strcmp(name, "max-stats")) ctx.cfg.max_stats = cgit_find_stats_period(value, NULL); else if (!strcmp(name, "cache-size")) @@ -238,6 +240,7 @@ static void prepare_context(struct cgit_context *ctx) ctx->cfg.css = "/cgit.css"; ctx->cfg.logo = "/cgit.png"; ctx->cfg.local_time = 0; + ctx->cfg.enable_tree_linenumbers = 1; ctx->cfg.max_repo_count = 50; ctx->cfg.max_commit_count = 50; ctx->cfg.max_lock_attempts = 5; diff --git a/cgit.css b/cgit.css index e3b32e7..ebf3322 100644 --- a/cgit.css +++ b/cgit.css @@ -237,16 +237,16 @@ table.blob { } table.blob td.lines { - margin: 0; padding: 0; + margin: 0; padding: 0 0 0 0.5em; vertical-align: top; color: black; } table.blob td.linenumbers { - margin: 0; padding: 0; + margin: 0; padding: 0 0.5em 0 0.5em; vertical-align: top; + text-align: right; border-right: 1px solid gray; - background-color: #eee; } table.blob pre { diff --git a/cgit.h b/cgit.h index adb8da4..a20679a 100644 --- a/cgit.h +++ b/cgit.h @@ -173,6 +173,7 @@ struct cgit_config { int enable_index_links; int enable_log_filecount; int enable_log_linecount; + int enable_tree_linenumbers; int local_time; int max_repo_count; int max_commit_count; diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 0d18290..3b16db9 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt @@ -99,6 +99,10 @@ enable-log-linecount:: and removed lines for each commit on the repository log page. Default value: "0". +enable-tree-linenumbers:: + Flag which, when set to "1", will make cgit generate linenumber links + for plaintext blobs printed in the tree view. Default value: "1". + favicon:: Url used as link to a shortcut icon for cgit. If specified, it is suggested to use the value "/favicon.ico" since certain browsers will diff --git a/ui-tree.c b/ui-tree.c index c608754..f53ab64 100644 --- a/ui-tree.c +++ b/ui-tree.c @@ -22,8 +22,28 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size) "%1$d\n"; html("
"); + idx = 0; + lineno = 0; + + if (size) { + htmlf(numberfmt, ++lineno); + while(idx < size - 1) { // skip absolute last newline + if (buf[idx] == '\n') + htmlf(numberfmt, ++lineno); + idx++; + } + } + html(" | \n");
+ }
+ else {
+ html("|||
|