summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2009-09-13 20:01:52 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2009-09-13 20:01:52 (UTC)
commit5f12e45fe3338095916a444ff106dd9fc9991d84 (patch) (side-by-side diff)
tree26b04e10b2ea277c09620bcf119eaa8f79e2fb88
parent45c49d6cf4b819385dfee620a81e3cb095ed5cd1 (diff)
parent6638f40868ccf7806a9668560d3608324704c2b7 (diff)
downloadcgit-5f12e45fe3338095916a444ff106dd9fc9991d84.zip
cgit-5f12e45fe3338095916a444ff106dd9fc9991d84.tar.gz
cgit-5f12e45fe3338095916a444ff106dd9fc9991d84.tar.bz2
Merge branch 'fp/linenumbers'
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--cgit.c3
-rw-r--r--cgit.css6
-rw-r--r--cgit.h1
-rw-r--r--cgitrc.5.txt4
-rw-r--r--ui-tree.c25
5 files changed, 27 insertions, 12 deletions
diff --git a/cgit.c b/cgit.c
index b0e1c44..ec40e1f 100644
--- a/cgit.c
+++ b/cgit.c
@@ -83,12 +83,14 @@ void config_cb(const char *name, const char *value)
else if (!strcmp(name, "enable-index-links"))
ctx.cfg.enable_index_links = atoi(value);
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"))
ctx.cfg.cache_size = atoi(value);
else if (!strcmp(name, "cache-root"))
ctx.cfg.cache_root = xstrdup(value);
@@ -235,12 +237,13 @@ static void prepare_context(struct cgit_context *ctx)
ctx->cfg.cache_root = CGIT_CACHE_ROOT;
ctx->cfg.cache_root_ttl = 5;
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;
ctx->cfg.max_msg_len = 80;
ctx->cfg.max_repodesc_len = 80;
ctx->cfg.max_stats = 0;
diff --git a/cgit.css b/cgit.css
index e3b32e7..ebf3322 100644
--- a/cgit.css
+++ b/cgit.css
@@ -234,22 +234,22 @@ td.ls-mode {
table.blob {
margin-top: 0.5em;
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 {
padding: 0; margin: 0;
}
diff --git a/cgit.h b/cgit.h
index adb8da4..a20679a 100644
--- a/cgit.h
+++ b/cgit.h
@@ -170,12 +170,13 @@ struct cgit_config {
int cache_root_ttl;
int cache_static_ttl;
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;
int max_lock_attempts;
int max_msg_len;
int max_repodesc_len;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 0d18290..3b16db9 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -96,12 +96,16 @@ enable-log-filecount::
enable-log-linecount::
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
ignore other values. Default value: none.
footer::
diff --git a/ui-tree.c b/ui-tree.c
index c608754..f53ab64 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -19,22 +19,14 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size)
{
unsigned long lineno, idx;
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.repo->source_filter) {
- html("<tr><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);
- cgit_close_filter(ctx.repo->source_filter);
- html("</code></pre></td></tr></table>\n");
- return;
- }
+ if (ctx.cfg.enable_tree_linenumbers) {
html("<tr><td class='linenumbers'><pre>");
idx = 0;
lineno = 0;
if (size) {
htmlf(numberfmt, ++lineno);
@@ -42,12 +34,27 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size)
if (buf[idx] == '\n')
htmlf(numberfmt, ++lineno);
idx++;
}
}
html("</pre></td>\n");
+ }
+ else {
+ html("<tr>\n");
+ }
+
+ if (ctx.repo->source_filter) {
+ 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);
+ cgit_close_filter(ctx.repo->source_filter);
+ html("</code></pre></td></tr></table>\n");
+ return;
+ }
+
html("<td class='lines'><pre><code>");
html_txt(buf);
html("</code></pre></td></tr></table>\n");
}
#define ROWLEN 32