Document the loading time displayed in the title window after 3 seconds
[tig] / tig.c
diff --git a/tig.c b/tig.c
index e8ee3ce..055ad11 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -293,14 +293,14 @@ parse_options(int argc, char *argv[])
                }
 
                /**
-                * -t[NSPACES], --tab-size[=NSPACES]::
+                * -b[NSPACES], --tab-size[=NSPACES]::
                 *      Set the number of spaces tabs should be expanded to.
                 **/
-               if (!strncmp(opt, "-t", 2) ||
+               if (!strncmp(opt, "-b", 2) ||
                    !strncmp(opt, "--tab-size", 10)) {
                        char *num = opt;
 
-                       if (opt[1] == 't') {
+                       if (opt[1] == 'b') {
                                num = opt + 2;
 
                        } else if (opt[STRING_SIZE("--tab-size")] == '=') {
@@ -820,6 +820,10 @@ redraw_view(struct view *view)
  *     [main] c622eefaa485995320bc743431bae0d497b1d875 - commit 1 of 61 (1%)
  *
  * By default, the title of the current view is highlighted using bold font.
+ * For long loading views (taking over 3 seconds) the time since loading
+ * started will be appended:
+ *
+ *     [main] 77d9e40fbcea3238015aea403e06f61542df9a31 - commit 1 of 779 (0%) 5s
  **/
 
 static void
@@ -1472,9 +1476,10 @@ view_driver(struct view *view, enum request request)
                break;
 
        case REQ_STOP_LOADING:
-               foreach_view (view, i) {
+               for (i = 0; i < ARRAY_SIZE(views); i++) {
+                       view = &views[i];
                        if (view->pipe)
-                               report("Stopped loaded the %s view", view->name),
+                               report("Stopped loading the %s view", view->name),
                        end_update(view);
                }
                break;
@@ -1495,11 +1500,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;
@@ -2536,7 +2545,9 @@ main(int argc, char *argv[])
                                memcpy(opt_cmd, "git ", 4);
                                opt_request = REQ_VIEW_PAGER;
                        } else {
-                               request = ERR;
+                               report("Prompt interrupted by loading view, "
+                                      "press 'z' to stop loading views");
+                               request = REQ_SCREEN_UPDATE;
                        }
 
                        noecho();
@@ -2675,6 +2686,8 @@ main(int argc, char *argv[])
  * - The cursor can wrap-around on the last line and cause the
  *   window to scroll.
  *
+ * - The prompt doesn't work while loading.
+ *
  * TODO
  * ----
  * Features that should be explored.