Author: Lars Hjemli <hjemli@gmail.com>
Merge branch 'fp/linenumbers'
cgit.c | 3 +++ cgit.css | 6 +++--- cgit.h | 1 + cgitrc.5.txt | 4 ++++ ui-tree.c | 35 +++++++++++++++++++++--------------
diff --git a/cgit.c b/cgit.c index b0e1c44366cda6e9af2951561e092cba91959b14..ec40e1f7f5993127bb5d141d8e2292bffc1ff12d 100644 --- a/cgit.c +++ b/cgit.c @@ -86,6 +86,8 @@ else if (!strcmp(name, "enable-log-filecount")) 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 @@ ctx->cfg.cache_static_ttl = -1; 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 e3b32e75c0d8a4c14aed2dbc8ee80c75bd1d9209..ebf33222070d7c9d932143e2a82c6c421263a56f 100644 --- a/cgit.css +++ b/cgit.css @@ -237,16 +237,16 @@ border-top: solid 1px black; } 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 adb8da4f49be0499eb83ed4a40794f11825be96a..a20679ad012bd0ea637f328f16d70e18c5b3fac2 100644 --- a/cgit.h +++ b/cgit.h @@ -173,6 +173,7 @@ int embedded; 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 0d1829069c7a4465ea02525eb9844ff33a86f2ef..3b16db96c0c2808d2a7d291c76defcf9142f5a3b 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt @@ -99,6 +99,10 @@ Flag which, when set to "1", will make cgit print the number of added 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 c608754f3e8e930169fda2ad08b7aba00a07cdb1..f53ab6414b9ad50c8f4210eaab8afc169a5c4a00 100644 --- a/ui-tree.c +++ b/ui-tree.c @@ -22,8 +22,28 @@ const char *numberfmt = "<a class='no' id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a>\n"; html("<table summary='blob content' class='blob'>\n"); + + if (ctx.cfg.enable_tree_linenumbers) { + html("<tr><td class='linenumbers'><pre>"); + 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("</pre></td>\n"); + } + else { + html("<tr>\n"); + } + if (ctx.repo->source_filter) { - html("<tr><td class='lines'><pre><code>"); + html("<td class='lines'><pre><code>"); ctx.repo->source_filter->argv[1] = xstrdup(name); cgit_open_filter(ctx.repo->source_filter); write(STDOUT_FILENO, buf, size); @@ -32,19 +52,6 @@ html("\n"); return; } - html("<tr><td class='linenumbers'><pre>"); - 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("</pre></td>\n"); html("<td class='lines'><pre><code>"); html_txt(buf); html("</code></pre></td></tr></table>\n");