chiark
/
gitweb
/
~mdw
/
tig
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
9eded37
)
Introduce add_line_text to simplify pager based rendering
author
Jonas Fonseca
<fonseca@diku.dk>
Tue, 29 May 2007 10:14:53 +0000
(12:14 +0200)
committer
Jonas Fonseca
<fonseca@diku.dk>
Tue, 29 May 2007 10:14:53 +0000
(12:14 +0200)
tig.c
patch
|
blob
|
blame
|
history
diff --git
a/tig.c
b/tig.c
index 5318fdd81f932e3f98c78402c3b3acb60a120f51..00888dd7a504160cb88ea758ea19315e57bb752b 100644
(file)
--- a/
tig.c
+++ b/
tig.c
@@
-1962,6
+1962,24
@@
end:
return FALSE;
}
return FALSE;
}
+static struct line *
+add_line_text(struct view *view, char *data, enum line_type type)
+{
+ struct line *line = &view->line[view->lines];
+
+ if (!data)
+ return NULL;
+
+ line->data = strdup(data);
+ if (!line->data)
+ return NULL;
+
+ line->type = type;
+ view->lines++;
+
+ return line;
+}
+
/*
* View opening
/*
* View opening
@@
-1986,14
+2004,14
@@
static void open_help_view(struct view *view)
return;
}
return;
}
-
view->ops->read(view, "Quick reference for tig keybindings:"
);
+
add_line_text(view, "Quick reference for tig keybindings:", LINE_DEFAULT
);
for (i = 0; i < ARRAY_SIZE(req_info); i++) {
char *key;
if (!req_info[i].request) {
for (i = 0; i < ARRAY_SIZE(req_info); i++) {
char *key;
if (!req_info[i].request) {
-
view->ops->read(view, ""
);
-
view->ops->read(view, req_info[i].help
);
+
add_line_text(view, "", LINE_DEFAULT
);
+
add_line_text(view, req_info[i].help, LINE_DEFAULT
);
continue;
}
continue;
}
@@
-2001,7
+2019,7
@@
static void open_help_view(struct view *view)
if (!string_format(buf, "%-25s %s", key, req_info[i].help))
continue;
if (!string_format(buf, "%-25s %s", key, req_info[i].help))
continue;
-
view->ops->read(view, buf
);
+
add_line_text(view, buf, LINE_DEFAULT
);
}
}
}
}
@@
-2393,30
+2411,21
@@
try_add_describe_ref:
if (!realloc_lines(view, view->line_size + 1))
return;
if (!realloc_lines(view, view->line_size + 1))
return;
- line = &view->line[view->lines];
- line->data = strdup(buf);
- if (!line->data)
- return;
-
- line->type = LINE_PP_REFS;
- view->lines++;
+ add_line_text(view, buf, LINE_PP_REFS);
}
static bool
pager_read(struct view *view, char *data)
{
}
static bool
pager_read(struct view *view, char *data)
{
- struct line *line
= &view->line[view->lines]
;
+ struct line *line;
if (!data)
return TRUE;
if (!data)
return TRUE;
- line
->data = strdup(data
);
- if (!line
->data
)
+ line
= add_line_text(view, data, get_line_type(data)
);
+ if (!line)
return FALSE;
return FALSE;
- line->type = get_line_type(line->data);
- view->lines++;
-
if (line->type == LINE_COMMIT &&
(view == VIEW(REQ_VIEW_DIFF) ||
view == VIEW(REQ_VIEW_LOG)))
if (line->type == LINE_COMMIT &&
(view == VIEW(REQ_VIEW_DIFF) ||
view == VIEW(REQ_VIEW_LOG)))
@@
-2534,21
+2543,18
@@
tree_read(struct view *view, char *text)
if (first_read) {
/* Add path info line */
if (first_read) {
/* Add path info line */
- if (string_format(buf, "Directory path /%s", opt_path) &&
- realloc_lines(view, view->line_size + 1) &&
- pager_read(view, buf))
- view->line[view->lines - 1].type = LINE_DEFAULT;
- else
+ if (!string_format(buf, "Directory path /%s", opt_path) ||
+ !realloc_lines(view, view->line_size + 1) ||
+ !add_line_text(view, buf, LINE_DEFAULT))
return FALSE;
/* Insert "link" to parent directory. */
return FALSE;
/* Insert "link" to parent directory. */
- if (*opt_path &&
- string_format(buf, TREE_UP_FORMAT, view->ref) &&
- realloc_lines(view, view->line_size + 1) &&
- pager_read(view, buf))
- view->line[view->lines - 1].type = LINE_TREE_DIR;
- else if (*opt_path)
- return FALSE;
+ if (*opt_path) {
+ if (!string_format(buf, TREE_UP_FORMAT, view->ref) ||
+ !realloc_lines(view, view->line_size + 1) ||
+ !add_line_text(view, buf, LINE_TREE_DIR))
+ return FALSE;
+ }
}
/* Strip the path part ... */
}
/* Strip the path part ... */
@@
-2587,14
+2593,13
@@
tree_read(struct view *view, char *text)
return TRUE;
}
return TRUE;
}
- if (!
pager_read(view, text
))
+ if (!
add_line_text(view, text, type
))
return FALSE;
/* Move the current line to the first tree entry. */
if (first_read)
view->lineno++;
return FALSE;
/* Move the current line to the first tree entry. */
if (first_read)
view->lineno++;
- view->line[view->lines - 1].type = type;
return TRUE;
}
return TRUE;
}
@@
-2681,12
+2686,7
@@
static struct view_ops tree_ops = {
static bool
blob_read(struct view *view, char *line)
{
static bool
blob_read(struct view *view, char *line)
{
- bool state = pager_read(view, line);
-
- if (state == TRUE)
- view->line[view->lines - 1].type = LINE_DEFAULT;
-
- return state;
+ return add_line_text(view, line, LINE_DEFAULT);
}
static struct view_ops blob_ops = {
}
static struct view_ops blob_ops = {