Code

Rename prepare_io to prepare_update and make it more specialized
[tig.git] / tig.c
diff --git a/tig.c b/tig.c
index 0f9394971629665bec78ae24e21fd6a3b83ffcf7..c1e527083372f3cddca17f6263ee3072a702baf9 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -1977,14 +1977,16 @@ toggle_option(enum request request)
 }
 
 static void
-maximize_view(struct view *view)
+maximize_view(struct view *view, bool redraw)
 {
        memset(display, 0, sizeof(display));
        current_view = 0;
        display[current_view] = view;
        resize_display();
-       redraw_display(FALSE);
-       report("");
+       if (redraw) {
+               redraw_display(FALSE);
+               report("");
+       }
 }
 
 
@@ -2498,18 +2500,18 @@ setup_update(struct view *view, const char *vid)
 }
 
 static bool
-prepare_io(struct view *view, const char *dir, const char *argv[], bool replace)
+prepare_update(struct view *view, const char *dir, const char *argv[])
 {
+       if (view->pipe)
+               io_done(view->pipe);
        view->dir = dir;
-       return format_argv(&view->argv, argv, replace, !view->prev);
+       return argv_copy(&view->argv, argv);
 }
 
 static bool
 start_update(struct view *view, const char **argv, const char *dir)
 {
-       if (view->pipe)
-               io_done(view->pipe);
-       return prepare_io(view, dir, argv, FALSE) &&
+       return prepare_update(view, dir, argv) &&
               io_run(&view->io, IO_RD, dir, view->argv);
 }
 
@@ -2526,7 +2528,8 @@ begin_update(struct view *view, const char *dir, const char **argv, enum open_fl
                end_update(view, TRUE);
 
        if (!refresh) {
-               if (!prepare_io(view, dir, argv, TRUE))
+               view->dir = dir;
+               if (!format_argv(&view->argv, argv, TRUE, !view->prev))
                        return FALSE;
 
                /* Put the current ref_* value to the view title ref
@@ -2715,6 +2718,29 @@ load_view(struct view *view, enum open_flags flags)
 
 #define refresh_view(view) load_view(view, OPEN_REFRESH)
 
+static void
+split_view(struct view *prev, struct view *view)
+{
+       display[1] = view;
+       current_view = 1;
+       view->parent = prev;
+       resize_display();
+
+       if (prev->lineno - prev->offset >= prev->height) {
+               /* Take the title line into account. */
+               int lines = prev->lineno - prev->offset - prev->height + 1;
+
+               /* Scroll the view that was split if the current line is
+                * outside the new limited view. */
+               do_scroll_view(prev, lines);
+       }
+
+       if (view != prev && view_is_displayed(prev)) {
+               /* "Blur" the previous view. */
+               update_view_title(prev);
+       }
+}
+
 static void
 open_view(struct view *prev, enum request request, enum open_flags flags)
 {
@@ -2736,30 +2762,9 @@ open_view(struct view *prev, enum request request, enum open_flags flags)
        }
 
        if (split) {
-               display[1] = view;
-               current_view = 1;
-               view->parent = prev;
-               resize_display();
-
-               if (prev->lineno - prev->offset >= prev->height) {
-                       /* Take the title line into account. */
-                       int lines = prev->lineno - prev->offset - prev->height + 1;
-
-                       /* Scroll the view that was split if the current line is
-                        * outside the new limited view. */
-                       do_scroll_view(prev, lines);
-               }
-
-               if (view != prev && view_is_displayed(prev)) {
-                       /* "Blur" the previous view. */
-                       update_view_title(prev);
-               }
+               split_view(prev, view);
        } else {
-               /* Maximize the current view. */
-               memset(display, 0, sizeof(display));
-               current_view = 0;
-               display[current_view] = view;
-               resize_display();
+               maximize_view(view, FALSE);
        }
 
        /* No prev signals that this is the first loaded view. */
@@ -2775,9 +2780,7 @@ open_argv(struct view *prev, struct view *view, const char *argv[], const char *
 {
        enum request request = view - views + REQ_OFFSET + 1;
 
-       if (view->pipe)
-               end_update(view, TRUE);
-       if (!prepare_io(view, dir, argv, FALSE)) {
+       if (!prepare_update(view, dir, argv)) {
                report("Failed to open %s view: %s", view->name, io_strerror(&view->io));
        } else {
                open_view(prev, request, flags | OPEN_PREPARED);
@@ -3000,7 +3003,7 @@ view_driver(struct view *view, enum request request)
 
        case REQ_MAXIMIZE:
                if (displayed_views() == 2)
-                       maximize_view(view);
+                       maximize_view(view, TRUE);
                break;
 
        case REQ_OPTIONS:
@@ -3057,7 +3060,7 @@ view_driver(struct view *view, enum request request)
                 * view itself. Parents to closed view should never be
                 * followed. */
                if (view->prev && view->prev != view) {
-                       maximize_view(view->prev);
+                       maximize_view(view->prev, TRUE);
                        view->prev = view;
                        break;
                }
@@ -5935,7 +5938,7 @@ 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);
+                       maximize_view(view, TRUE);
                open_view(view, REQ_VIEW_DIFF, flags);
                break;
        case REQ_REFRESH: