summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 47dd652)
raw | patch | inline | side by side (parent: 47dd652)
author | Jonas Fonseca <fonseca@diku.dk> | |
Wed, 2 Apr 2008 21:14:40 +0000 (23:14 +0200) | ||
committer | Jonas Fonseca <fonseca@diku.dk> | |
Wed, 2 Apr 2008 21:38:04 +0000 (23:38 +0200) |
tig.c | patch | blob | history |
index 413bd04b61a2766f7c1c6decde15fdfb578220fd..ee9d70639b05225c69974229b33274dc123d0184 100644 (file)
--- a/tig.c
+++ b/tig.c
return len;
}
+static int
+draw_lineno(struct view *view, unsigned int lineno, int max, bool selected)
+{
+ static char fmt[] = "%1ld";
+ char number[10] = " ";
+ int max_number = MIN(view->digits, STRING_SIZE(number));
+ bool showtrimmed = FALSE;
+ int col;
+
+ lineno += view->offset + 1;
+ if (lineno == 1 || (lineno % opt_num_interval) == 0) {
+ if (view->digits <= 9)
+ fmt[1] = '0' + view->digits;
+
+ if (!string_format(number, fmt, lineno))
+ number[0] = 0;
+ showtrimmed = TRUE;
+ }
+
+ if (max < max_number)
+ max_number = max;
+
+ col = draw_text(view, number, max_number, showtrimmed, selected);
+ if (col < max) {
+ if (!selected)
+ wattrset(view->win, A_NORMAL);
+ waddch(view->win, ACS_VLINE);
+ col++;
+ }
+ if (col < max) {
+ waddch(view->win, ' ');
+ col++;
+ }
+
+ return col;
+}
+
static bool
draw_view_line(struct view *view, unsigned int lineno)
{
static bool
pager_draw(struct view *view, struct line *line, unsigned int lineno, bool selected)
{
+ static char spaces[] = " ";
char *text = line->data;
enum line_type type = line->type;
- int attr;
+ int attr = A_NORMAL;
+ int col = 0;
wmove(view->win, lineno, 0);
if (selected) {
type = LINE_CURSOR;
wchgat(view->win, -1, 0, type, NULL);
+ attr = get_line_attr(type);
}
-
- attr = get_line_attr(type);
wattrset(view->win, attr);
- if (opt_line_number || opt_tab_size < TABSIZE) {
- static char spaces[] = " ";
- int col_offset = 0, col = 0;
-
- if (opt_line_number) {
- unsigned long real_lineno = view->offset + lineno + 1;
-
- if (real_lineno == 1 ||
- (real_lineno % opt_num_interval) == 0) {
- wprintw(view->win, "%.*d", view->digits, real_lineno);
+ if (opt_line_number) {
+ col += draw_lineno(view, lineno, view->width, selected);
+ if (col >= view->width)
+ return TRUE;
+ }
- } else {
- waddnstr(view->win, spaces,
- MIN(view->digits, STRING_SIZE(spaces)));
- }
- waddstr(view->win, ": ");
- col_offset = view->digits + 2;
- }
+ if (!selected) {
+ attr = get_line_attr(type);
+ wattrset(view->win, attr);
+ }
+ if (opt_tab_size < TABSIZE) {
+ int col_offset = col;
+ col = 0;
while (text && col_offset + col < view->width) {
int cols_max = view->width - col_offset - col;
char *pos = text;
@@ -2754,7 +2787,7 @@ pager_draw(struct view *view, struct line *line, unsigned int lineno, bool selec
}
} else {
- draw_text(view, text, view->width, TRUE, selected);
+ draw_text(view, text, view->width - col, TRUE, selected);
}
return TRUE;
@@ -3599,43 +3632,13 @@ blame_draw(struct view *view, struct line *line, unsigned int lineno, bool selec
}
{
- unsigned long real_lineno = view->offset + lineno + 1;
- char number[10] = " ";
- int max = MIN(view->digits, STRING_SIZE(number));
- bool showtrimmed = FALSE;
-
- if (real_lineno == 1 ||
- (real_lineno % opt_num_interval) == 0) {
- char fmt[] = "%1ld";
-
- if (view->digits <= 9)
- fmt[1] = '0' + view->digits;
-
- if (!string_format(number, fmt, real_lineno))
- number[0] = 0;
- showtrimmed = TRUE;
- }
-
- if (max > view->width - col)
- max = view->width - col;
if (!selected)
wattrset(view->win, get_line_attr(LINE_BLAME_LINENO));
- col += draw_text(view, number, max, showtrimmed, selected);
+ col += draw_lineno(view, lineno, view->width - col, selected);
if (col >= view->width)
return TRUE;
}
- if (!selected)
- wattrset(view->win, A_NORMAL);
-
- if (col >= view->width)
- return TRUE;
- waddch(view->win, ACS_VLINE);
- col++;
- if (col >= view->width)
- return TRUE;
- waddch(view->win, ' ');
- col++;
col += draw_text(view, blame->text, view->width - col, TRUE, selected);
return TRUE;