Code

prepare_update_file: assume file is relative to root directory
[tig.git] / tig.c
diff --git a/tig.c b/tig.c
index 1be9fc527991e5999d49cd97208899a464183ff6..77f06651a9acbe9c61c60794321cd19a79643016 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -3081,7 +3081,7 @@ prepare_update_file(struct view *view, const char *name)
 {
        if (view->pipe)
                end_update(view, TRUE);
-       return io_open(&view->io, "%s", name);
+       return io_open(&view->io, "%s/%s", opt_cdup[0] ? opt_cdup : ".", name);
 }
 
 static bool
@@ -3359,7 +3359,7 @@ open_mergetool(const char *file)
 }
 
 static void
-open_editor(bool from_root, const char *file)
+open_editor(const char *file)
 {
        const char *editor_argv[] = { "vi", file, NULL };
        const char *editor;
@@ -3375,7 +3375,7 @@ open_editor(bool from_root, const char *file)
                editor = "vi";
 
        editor_argv[0] = editor;
-       open_external_viewer(editor_argv, from_root ? opt_cdup : NULL);
+       open_external_viewer(editor_argv, opt_cdup);
 }
 
 static void
@@ -4472,7 +4472,7 @@ open_blob_editor()
        else if (!run_io_append(blob_ops.argv, FORMAT_ALL, fd))
                report("Failed to save blob data to file");
        else
-               open_editor(FALSE, file);
+               open_editor(file);
        if (fd != -1)
                unlink(file);
 }
@@ -4498,7 +4498,7 @@ tree_request(struct view *view, enum request request, struct line *line)
                } else if (!is_head_commit(view->vid)) {
                        open_blob_editor();
                } else {
-                       open_editor(TRUE, opt_file);
+                       open_editor(opt_file);
                }
                return REQ_NONE;
 
@@ -5450,7 +5450,7 @@ static const char *status_diff_files_argv[] = {
 };
 
 static const char *status_list_other_argv[] = {
-       "git", "ls-files", "-z", "--others", "--exclude-standard", NULL
+       "git", "ls-files", "-z", "--others", "--exclude-standard", opt_prefix, NULL
 };
 
 static const char *status_list_no_head_argv[] = {
@@ -5958,7 +5958,7 @@ status_request(struct view *view, enum request request, struct line *line)
                        return REQ_NONE;
                }
 
-               open_editor(status->status != '?', status->new.name);
+               open_editor(status->new.name);
                break;
 
        case REQ_VIEW_BLAME:
@@ -6240,7 +6240,7 @@ stage_request(struct view *view, enum request request, struct line *line)
                        return REQ_NONE;
                }
 
-               open_editor(stage_status.status != '?', stage_status.new.name);
+               open_editor(stage_status.new.name);
                break;
 
        case REQ_REFRESH: