X-Git-Url: https://git.distorted.org.uk/~mdw/tig/blobdiff_plain/9f396969d5163421c4ceb9628aa1ed63878d94ac..2fcf54018eb1bd8b9e177e322f5d833fa53107ff:/tig.c diff --git a/tig.c b/tig.c index 975e7dc..b08d3f7 100644 --- a/tig.c +++ b/tig.c @@ -1,8 +1,9 @@ /* Copyright (c) 2006 Jonas Fonseca * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -473,9 +474,9 @@ parse_options(int argc, char *argv[]) "git ls-remote . 2>/dev/null" /** - * [[view-commands]] - * View commands - * ~~~~~~~~~~~~~ + * [[history-commands]] + * History commands + * ~~~~~~~~~~~~~~~~ * It is possible to alter which commands are used for the different views. * If for example you prefer commits in the main view to be sorted by date * and only show 500 commits, use: @@ -857,7 +858,7 @@ update_view_title(struct view *view) wprintw(view->title, " %lds", secs); } - + wmove(view->title, 0, view->width - 1); wrefresh(view->title); } @@ -906,7 +907,6 @@ resize_display(void) wresize(view->win, view->height, view->width); mvwin(view->win, offset, 0); mvwin(view->title, offset + view->height, 0); - wrefresh(view->win); } offset += view->height + 1; @@ -925,6 +925,20 @@ redraw_display(void) } } +static void +update_display_cursor(void) +{ + struct view *view = display[current_view]; + + /* Move the cursor to the right-most column of the cursor line. + * + * XXX: This could turn out to be a bit expensive, but it ensures that + * the cursor does not jump around. */ + if (view->lines) { + wmove(view->win, view->lineno - view->offset, view->width - 1); + wrefresh(view->win); + } +} /* * Navigation @@ -1344,7 +1358,7 @@ open_view(struct view *prev, enum request request, enum open_flags flags) } if (prev && view != prev) { - if (!backgrounded) { + if (split && !backgrounded) { /* "Blur" the previous view. */ update_view_title(prev); } @@ -1481,11 +1495,15 @@ view_driver(struct view *view, enum request request) return TRUE; case REQ_VIEW_CLOSE: - if (view->parent) { + /* XXX: Mark closed views by letting view->parent point to the + * view itself. Parents to closed view should never be + * followed. */ + if (view->parent && + view->parent->parent != view->parent) { memset(display, 0, sizeof(display)); current_view = 0; display[current_view] = view->parent; - view->parent = NULL; + view->parent = view; resize_display(); redraw_display(); break; @@ -2205,15 +2223,7 @@ report(const char *msg, ...) } update_view_title(view); - - /* Move the cursor to the right-most column of the cursor line. - * - * XXX: This could turn out to be a bit expensive, but it ensures that - * the cursor does not jump around. */ - if (view->lines) { - wmove(view->win, view->lineno - view->offset, view->width - 1); - wrefresh(view->win); - } + update_display_cursor(); } /* Controls when nodelay should be in effect when polling user input. */ @@ -2415,8 +2425,10 @@ read_properties(const char *cmd, int separator, namelen = value - name; *value++ = 0; valuelen = strlen(value); - if (valuelen > 0) - value[valuelen - 1] = 0; + if (valuelen > 0) { + valuelen--; + value[valuelen] = 0; + } } else { namelen = strlen(name); @@ -2570,7 +2582,8 @@ main(int argc, char *argv[]) * * You can tune the interaction with git by making use of the options * explained in this section. For example, by configuring the environment - * variables described in the <> section. + * variables described in the <> + * section. * * Limit by path name * ~~~~~~~~~~~~~~~~~~ @@ -2689,7 +2702,7 @@ main(int argc, char *argv[]) * - link:http://www.kernel.org/pub/software/scm/cogito/docs/[cogito(7)] * * Other git repository browsers: -* + * * - gitk(1) * - qgit(1) * - gitview(1)