static bool branch_draw(struct view *view, struct line *line, unsigned int lineno) { struct branch_state *state = view->private; struct branch *branch = line->data; enum line_type type = branch_is_all(branch) ? LINE_DEFAULT : get_line_type_from_ref(branch->ref); const char *branch_name = branch_is_all(branch) ? BRANCH_ALL_NAME : branch->ref->name; if (draw_lineno(view, lineno)) return TRUE; if (draw_date(view, &branch->time)) return TRUE; if (draw_author(view, branch->author)) return TRUE; if (draw_field(view, type, branch_name, state->max_ref_length, ALIGN_LEFT, FALSE)) return TRUE; if (draw_id(view, branch->ref->id)) return TRUE; draw_text(view, LINE_DEFAULT, branch->title); return TRUE; }
static bool draw_ref(struct view *view, struct view_column *column, const struct ref *ref) { enum line_type type = !ref || !ref->valid ? LINE_DEFAULT : get_line_type_from_ref(ref); const char *name = ref ? ref->name : NULL; return draw_field(view, type, name, column->width, ALIGN_LEFT, false); }
bool draw_refs(struct view *view, struct ref_list *refs) { size_t i; if (!opt_show_refs || !refs) return FALSE; for (i = 0; i < refs->size; i++) { struct ref *ref = refs->refs[i]; enum line_type type = get_line_type_from_ref(ref); if (draw_formatted(view, type, "[%s]", ref->name)) return TRUE; if (draw_text(view, LINE_DEFAULT, " ")) return TRUE; } return FALSE; }
static bool draw_refs(struct view *view, struct view_column *column, const struct ref_list *refs) { size_t i; if (!column->opt.commit_title.refs || !refs) return FALSE; for (i = 0; i < refs->size; i++) { struct ref *ref = refs->refs[i]; enum line_type type = get_line_type_from_ref(ref); const struct ref_format *format = get_ref_format(ref); if (draw_formatted(view, type, "%s%s%s", format->start, ref->name, format->end)) return TRUE; if (draw_text(view, LINE_DEFAULT, " ")) return TRUE; } return FALSE; }
static bool draw_refs(struct view *view, struct view_column *column, const struct ref *refs) { if (!column->opt.commit_title.refs || !refs) return false; for (; refs; refs = refs->next) { const struct ref *ref = refs; enum line_type type = get_line_type_from_ref(ref); const struct ref_format *format = get_ref_format(opt_reference_format, ref); if (!strcmp(format->start, "hide:") && !*format->end) continue; if (draw_formatted(view, type, "%s%s%s", format->start, ref->name, format->end)) return true; if (draw_text(view, LINE_DEFAULT, " ")) return true; } return false; }
bool view_column_draw(struct view *view, struct line *line, unsigned int lineno) { struct view_column *column; struct view_column_data column_data = {}; if (!view->ops->get_column_data(view, line, &column_data)) return TRUE; for (column = view->columns; column; column = column->next) { mode_t mode = column_data.mode ? *column_data.mode : 0; int width = column->width; if (column->hidden) continue; switch (column->type) { case VIEW_COLUMN_DATE: if (draw_date(view, column, column_data.date)) return TRUE; continue; case VIEW_COLUMN_AUTHOR: if (draw_author(view, column, column_data.author)) return TRUE; continue; case VIEW_COLUMN_REF: { const struct ref *ref = column_data.ref; enum line_type type = !ref || !ref->valid ? LINE_DEFAULT : get_line_type_from_ref(ref); const char *name = ref ? ref->name : NULL; if (draw_field(view, type, name, width, ALIGN_LEFT, FALSE)) return TRUE; continue; } case VIEW_COLUMN_ID: if (draw_id(view, column, column_data.id)) return TRUE; continue; case VIEW_COLUMN_LINE_NUMBER: if (draw_lineno(view, column, column_data.line_number ? *column_data.line_number : lineno)) return TRUE; continue; case VIEW_COLUMN_MODE: if (draw_mode(view, mode)) return TRUE; continue; case VIEW_COLUMN_FILE_SIZE: if (draw_file_size(view, column, column_data.file_size ? *column_data.file_size : 0, mode)) return TRUE; continue; case VIEW_COLUMN_COMMIT_TITLE: if (column_data.graph && draw_graph(view, column_data.graph)) return TRUE; if (column_data.refs && draw_refs(view, column, column_data.refs)) return TRUE; if (draw_commit_title(view, column_data.commit_title, 0)) return TRUE; continue; case VIEW_COLUMN_FILE_NAME: if (draw_filename(view, column, column_data.file_name, TRUE, mode)) return TRUE; continue; case VIEW_COLUMN_TEXT: if (line->wrapped && draw_text(view, LINE_DELIMITER, "+")) return TRUE; if (draw_text(view, line->type, column_data.text)) return TRUE; continue; } } return TRUE; }