Code

Improve viewing of diffs when browsing branches
[tig.git] / tig.c
diff --git a/tig.c b/tig.c
index b6df54c82060163ce895102c69180a1294b48e78..80c4d7a6c7994725092b0aec0dd644f3a5ea4df4 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -2407,11 +2407,12 @@ draw_chars(struct view *view, enum line_type type, const char *string,
                }
 
                waddnstr(view->win, string, len);
-       }
-       if (trimmed && use_tilde) {
-               set_view_attr(view, LINE_DELIMITER);
-               waddch(view->win, '~');
-               col++;
+
+               if (trimmed && use_tilde) {
+                       set_view_attr(view, LINE_DELIMITER);
+                       waddch(view->win, '~');
+                       col++;
+               }
        }
 
        return col;
@@ -3223,7 +3224,7 @@ format_arg(const char *name)
 }
 
 static bool
-format_argv(const char ***dst_argv, const char *src_argv[], bool replace)
+format_argv(const char ***dst_argv, const char *src_argv[], bool replace, bool first)
 {
        char buf[SIZEOF_STR];
        int argc;
@@ -3244,7 +3245,8 @@ format_argv(const char ***dst_argv, const char *src_argv[], bool replace)
                                break;
                        continue;
 
-               } else if (!strcmp(arg, "%(revargs)")) {
+               } else if (!strcmp(arg, "%(revargs)") ||
+                          (first && !strcmp(arg, "%(commit)"))) {
                        if (!argv_append_array(dst_argv, opt_rev_args))
                                break;
                        continue;
@@ -3330,7 +3332,7 @@ static bool
 prepare_io(struct view *view, const char *dir, const char *argv[], bool replace)
 {
        view->dir = dir;
-       return format_argv(&view->argv, argv, replace);
+       return format_argv(&view->argv, argv, replace, !view->prev);
 }
 
 static bool
@@ -3667,7 +3669,7 @@ open_run_request(enum request request)
                return;
        }
 
-       if (format_argv(&argv, req->argv, TRUE))
+       if (format_argv(&argv, req->argv, TRUE, FALSE))
                open_external_viewer(argv, NULL);
        if (argv)
                argv_free(argv);
@@ -6940,6 +6942,8 @@ main_request(struct view *view, enum request request, struct line *line)
 
        switch (request) {
        case REQ_ENTER:
+               if (view_is_displayed(view) && display[0] != view)
+                       maximize_view(view);
                open_view(view, REQ_VIEW_DIFF, flags);
                break;
        case REQ_REFRESH:
@@ -7109,7 +7113,11 @@ init_display(void)
        keypad(status_win, TRUE);
        wbkgdset(status_win, get_line_attr(LINE_STATUS));
 
+#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20080119)
+       set_tabsize(opt_tab_size);
+#else
        TABSIZE = opt_tab_size;
+#endif
 
        term = getenv("XTERM_VERSION") ? NULL : getenv("COLORTERM");
        if (term && !strcmp(term, "gnome-terminal")) {