diff options
| author | 2009-09-14 05:01:52 (JST) | |
|---|---|---|
| committer | 2009-09-14 05:01:52 (JST) | |
| commit | 5f12e45fe3338095916a444ff106dd9fc9991d84 (patch) | |
| tree | 26b04e10b2ea277c09620bcf119eaa8f79e2fb88 | |
| parent | 45c49d6cf4b819385dfee620a81e3cb095ed5cd1 (diff) | |
| parent | 6638f40868ccf7806a9668560d3608324704c2b7 (diff) | |
| download | cgit-5f12e45fe3338095916a444ff106dd9fc9991d84.zip cgit-5f12e45fe3338095916a444ff106dd9fc9991d84.tar.gz | |
Merge branch 'fp/linenumbers'
| -rw-r--r-- | cgit.c | 3 | ||||
| -rw-r--r-- | cgit.css | 6 | ||||
| -rw-r--r-- | cgit.h | 1 | ||||
| -rw-r--r-- | cgitrc.5.txt | 4 | ||||
| -rw-r--r-- | ui-tree.c | 35 |
5 files changed, 32 insertions, 17 deletions
| @@ -86,6 +86,8 @@ void config_cb(const char *name, const char *value) | |||
| 86 | ctx.cfg.enable_log_filecount = atoi(value); | 86 | ctx.cfg.enable_log_filecount = atoi(value); |
| 87 | else if (!strcmp(name, "enable-log-linecount")) | 87 | else if (!strcmp(name, "enable-log-linecount")) |
| 88 | ctx.cfg.enable_log_linecount = atoi(value); | 88 | ctx.cfg.enable_log_linecount = atoi(value); |
| 89 | else if (!strcmp(name, "enable-tree-linenumbers")) | ||
| 90 | ctx.cfg.enable_tree_linenumbers = atoi(value); | ||
| 89 | else if (!strcmp(name, "max-stats")) | 91 | else if (!strcmp(name, "max-stats")) |
| 90 | ctx.cfg.max_stats = cgit_find_stats_period(value, NULL); | 92 | ctx.cfg.max_stats = cgit_find_stats_period(value, NULL); |
| 91 | else if (!strcmp(name, "cache-size")) | 93 | else if (!strcmp(name, "cache-size")) |
| @@ -238,6 +240,7 @@ static void prepare_context(struct cgit_context *ctx) | |||
| 238 | ctx->cfg.css = "/cgit.css"; | 240 | ctx->cfg.css = "/cgit.css"; |
| 239 | ctx->cfg.logo = "/cgit.png"; | 241 | ctx->cfg.logo = "/cgit.png"; |
| 240 | ctx->cfg.local_time = 0; | 242 | ctx->cfg.local_time = 0; |
| 243 | ctx->cfg.enable_tree_linenumbers = 1; | ||
| 241 | ctx->cfg.max_repo_count = 50; | 244 | ctx->cfg.max_repo_count = 50; |
| 242 | ctx->cfg.max_commit_count = 50; | 245 | ctx->cfg.max_commit_count = 50; |
| 243 | ctx->cfg.max_lock_attempts = 5; | 246 | ctx->cfg.max_lock_attempts = 5; |
| @@ -237,16 +237,16 @@ table.blob { | |||
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | table.blob td.lines { | 239 | table.blob td.lines { |
| 240 | margin: 0; padding: 0; | 240 | margin: 0; padding: 0 0 0 0.5em; |
| 241 | vertical-align: top; | 241 | vertical-align: top; |
| 242 | color: black; | 242 | color: black; |
| 243 | } | 243 | } |
| 244 | 244 | ||
| 245 | table.blob td.linenumbers { | 245 | table.blob td.linenumbers { |
| 246 | margin: 0; padding: 0; | 246 | margin: 0; padding: 0 0.5em 0 0.5em; |
| 247 | vertical-align: top; | 247 | vertical-align: top; |
| 248 | text-align: right; | ||
| 248 | border-right: 1px solid gray; | 249 | border-right: 1px solid gray; |
| 249 | background-color: #eee; | ||
| 250 | } | 250 | } |
| 251 | 251 | ||
| 252 | table.blob pre { | 252 | table.blob pre { |
| @@ -173,6 +173,7 @@ struct cgit_config { | |||
| 173 | int enable_index_links; | 173 | int enable_index_links; |
| 174 | int enable_log_filecount; | 174 | int enable_log_filecount; |
| 175 | int enable_log_linecount; | 175 | int enable_log_linecount; |
| 176 | int enable_tree_linenumbers; | ||
| 176 | int local_time; | 177 | int local_time; |
| 177 | int max_repo_count; | 178 | int max_repo_count; |
| 178 | int max_commit_count; | 179 | 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:: | |||
| 99 | and removed lines for each commit on the repository log page. Default | 99 | and removed lines for each commit on the repository log page. Default |
| 100 | value: "0". | 100 | value: "0". |
| 101 | 101 | ||
| 102 | enable-tree-linenumbers:: | ||
| 103 | Flag which, when set to "1", will make cgit generate linenumber links | ||
| 104 | for plaintext blobs printed in the tree view. Default value: "1". | ||
| 105 | |||
| 102 | favicon:: | 106 | favicon:: |
| 103 | Url used as link to a shortcut icon for cgit. If specified, it is | 107 | Url used as link to a shortcut icon for cgit. If specified, it is |
| 104 | suggested to use the value "/favicon.ico" since certain browsers will | 108 | suggested to use the value "/favicon.ico" since certain browsers will |
| @@ -22,8 +22,28 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size) | |||
| 22 | "<a class='no' id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a>\n"; | 22 | "<a class='no' id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a>\n"; |
| 23 | 23 | ||
| 24 | html("<table summary='blob content' class='blob'>\n"); | 24 | html("<table summary='blob content' class='blob'>\n"); |
| 25 | |||
| 26 | if (ctx.cfg.enable_tree_linenumbers) { | ||
| 27 | html("<tr><td class='linenumbers'><pre>"); | ||
| 28 | idx = 0; | ||
| 29 | lineno = 0; | ||
| 30 | |||
| 31 | if (size) { | ||
| 32 | htmlf(numberfmt, ++lineno); | ||
| 33 | while(idx < size - 1) { // skip absolute last newline | ||
| 34 | if (buf[idx] == '\n') | ||
| 35 | htmlf(numberfmt, ++lineno); | ||
| 36 | idx++; | ||
| 37 | } | ||
| 38 | } | ||
| 39 | html("</pre></td>\n"); | ||
| 40 | } | ||
| 41 | else { | ||
| 42 | html("<tr>\n"); | ||
| 43 | } | ||
| 44 | |||
| 25 | if (ctx.repo->source_filter) { | 45 | if (ctx.repo->source_filter) { |
| 26 | html("<tr><td class='lines'><pre><code>"); | 46 | html("<td class='lines'><pre><code>"); |
| 27 | ctx.repo->source_filter->argv[1] = xstrdup(name); | 47 | ctx.repo->source_filter->argv[1] = xstrdup(name); |
| 28 | cgit_open_filter(ctx.repo->source_filter); | 48 | cgit_open_filter(ctx.repo->source_filter); |
| 29 | write(STDOUT_FILENO, buf, size); | 49 | write(STDOUT_FILENO, buf, size); |
| @@ -32,19 +52,6 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size) | |||
| 32 | return; | 52 | return; |
| 33 | } | 53 | } |
| 34 | 54 | ||
| 35 | html("<tr><td class='linenumbers'><pre>"); | ||
| 36 | idx = 0; | ||
| 37 | lineno = 0; | ||
| 38 | |||
| 39 | if (size) { | ||
| 40 | htmlf(numberfmt, ++lineno); | ||
| 41 | while(idx < size - 1) { // skip absolute last newline | ||
| 42 | if (buf[idx] == '\n') | ||
| 43 | htmlf(numberfmt, ++lineno); | ||
| 44 | idx++; | ||
| 45 | } | ||
| 46 | } | ||
| 47 | html("</pre></td>\n"); | ||
| 48 | html("<td class='lines'><pre><code>"); | 55 | html("<td class='lines'><pre><code>"); |
| 49 | html_txt(buf); | 56 | html_txt(buf); |
| 50 | html("</code></pre></td></tr></table>\n"); | 57 | html("</code></pre></td></tr></table>\n"); |
