Tait <git.git@xxxxxxxx> writes: > It comes from line 33 of editor.c, in launch_editor(). > if (strcmp(editor, ":")) { This says "if 'editor' is not exactly the string ':'", then come into this block. If you set editor to ":abc", or "c:\path to\my editor.exe", they are not "exactly the string ':'" and the codepath inside will be executed. > ... I'm not familiar with the EDITOR=: > convention. What is that supposed to indicate? Literally, it means "run ':' command as the editor". ':' command takes and ignores arbitrary arguments and returns success without doing anything. As such, the codepath pretends that it ran ':' command without actually running it, and returns as if it ran ':' command that left the input file given as its argument unmodified. > Can we narrow the > detection to that specific case, or does a : anywhere in EDITOR need > to be handled this way? No, and the if statement is already narrow enough. I think the problem is that you have a broken shell ("sh"). /* ... */ if (strcspn(editor, "$ \t'") != len) { /* there are specials */ strbuf_addf(&arg0, "%s \"$@\"", editor); args[i++] = "sh"; args[i++] = "-c"; args[i++] = arg0.buf; } args[i++] = editor; args[i++] = path; args[i] = NULL; /* ... */ If you have editor='"c:\some path\editor" -f', strcspn() notices that you have a funny character in the path, and creates this string in arg0: "c:\some path\editor" -f "$@" and feeds '-c', the above arg0, editor, and finally the name of the file, to your shell; it is the same as running this from the command line: sh -c '"c:\some path\editor" -f "$@"' '"c:\some path\editor" -f' path-to-file Now shell is supposed to expand "$@" into positional parameters, i.e. $1 (in this case, path-to-file) and run the named editor with it, IOW, your editor program should see "-f" as its first parameter, and path-to-file as its second parameter (and argv[] is terminated with NULL after that). If you end up with a file whose name literally is '$@', that probably means your "sh" did not expand it correctly. -- 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