Minor cleanups
[tig] / tig.c
diff --git a/tig.c b/tig.c
index 66c5f76..a871cb0 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -2447,7 +2447,7 @@ static struct view_ops pager_ops = {
  * Tree backend
  */
 
-/* Parse output from git ls-tree:
+/* Parse output from git-ls-tree(1):
  *
  * 100644 blob fb0e31ea6cc679b7379631188190e975f5789c26        Makefile
  * 100644 blob 5304ca4260aaddaee6498f9630e7d471b8591ea6        README
@@ -2558,7 +2558,6 @@ static bool
 tree_enter(struct view *view, struct line *line)
 {
        enum open_flags flags = display[0] == view ? OPEN_SPLIT : OPEN_DEFAULT;
-       char *data = line->data;
        enum request request;
 
        switch (line->type) {
@@ -2577,6 +2576,7 @@ tree_enter(struct view *view, struct line *line)
                } else {
                        size_t pathlen = strlen(opt_path);
                        size_t origlen = pathlen;
+                       char *data = line->data;
                        char *basename = data + SIZEOF_TREE_ATTR;
 
                        if (!string_format_from(opt_path, &pathlen, "%s/", basename)) {
@@ -2601,29 +2601,27 @@ tree_enter(struct view *view, struct line *line)
 
        open_view(view, request, flags);
 
-       if (!VIEW(request)->pipe)
-               return TRUE;
-
-       /* For tree views insert the path to the parent as the first line. */
-       if (request == REQ_VIEW_BLOB) {
-               /* Mirror what is showed in the title bar. */
-               string_ncopy(ref_blob, data + STRING_SIZE("100644 blob "), 40);
-               string_copy(VIEW(REQ_VIEW_BLOB)->ref, ref_blob);
-               return TRUE;
-       }
-
        return TRUE;
 }
 
 static void
 tree_select(struct view *view, struct line *line)
 {
-       if (line->type == LINE_TREE_DIR || line->type == LINE_TREE_FILE) {
-               char *text = line->data;
+       char *text = line->data;
+
+       text += STRING_SIZE("100644 blob ");
+
+       if (line->type == LINE_TREE_FILE) {
+               string_ncopy(ref_blob, text, 40);
+               /* Also update the blob view's ref, since all there must always
+                * be in sync. */
+               string_copy(VIEW(REQ_VIEW_BLOB)->ref, ref_blob);
 
-               string_ncopy(view->ref, text + STRING_SIZE("100644 blob "), 40);
-               string_copy(ref_blob, view->ref);
+       } else if (line->type != LINE_TREE_DIR) {
+               return;
        }
+
+       string_ncopy(view->ref, text, 40);
 }
 
 static struct view_ops tree_ops = {