On Mon, Jul 29, 2013 at 07:56:58AM -0700, Junio C Hamano wrote: > > diff --git a/editor.c b/editor.c > > index 27bdecd..0abbd8d 100644 > > --- a/editor.c > > +++ b/editor.c > > @@ -37,7 +37,7 @@ int launch_editor(const char *path, struct strbuf *buffer, const char *const *en > > return error("Terminal is dumb, but EDITOR unset"); > > > > if (strcmp(editor, ":")) { > > - const char *args[] = { editor, path, NULL }; > > + const char *args[] = { editor, real_path(path), NULL }; > > While I am not fundamentally opposed to add a workaround for bugs in > a popular tool many people use, I am a bit uneasy about this change. > > For editors that are not broken, this could be an annoying > regression, isn't it? When the user asks "What is the path of the > file I am editing?" to the editor (i.e. an equivalent of \C-x\C-b), > the updated code will start spewing a long full-path from the root > directory, while we used to give a relative path that is short, > sweet and more in line with the context of user's work. > > Compared to not being able to edit, it may be a small price to pay > for those who do need to suffer the broken editor, but the patch > makes those who do not need this workaround to pay the price. > How about something like this? For standard setups, even if you have symlink in cwd, it won't kick in because the given path is usually .git/something (i.e. no ".." component) -- 8< -- diff --git a/editor.c b/editor.c index 27bdecd..02bf42c 100644 --- a/editor.c +++ b/editor.c @@ -37,10 +37,17 @@ int launch_editor(const char *path, struct strbuf *buffer, const char *const *en return error("Terminal is dumb, but EDITOR unset"); if (strcmp(editor, ":")) { + char cwd[PATH_MAX]; const char *args[] = { editor, path, NULL }; struct child_process p; int ret, sig; + /* emacs workaround */ + if (getcwd(cwd, PATH_MAX) && + strcmp(real_path(cwd), cwd) && + strstr(path, "../")) + args[1] = real_path(path); + memset(&p, 0, sizeof(p)); p.argv = args; p.env = env; -- 8<-- -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html