X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=editor.c;h=615f5754d66ba7ea611a4837b1ff802f9f9de598;hb=a1bb8f45f1590f812badceea0b7c120074ec3e85;hp=941c0b2ab6deeaaaa346256b7c8080fd67c996b2;hpb=eab58f1e8e5ef86b5075ce6dfcd6d3f1b3b888b3;p=git.git diff --git a/editor.c b/editor.c index 941c0b2ab..615f5754d 100644 --- a/editor.c +++ b/editor.c @@ -2,24 +2,38 @@ #include "strbuf.h" #include "run-command.h" -int launch_editor(const char *path, struct strbuf *buffer, const char *const *env) +#ifndef DEFAULT_EDITOR +#define DEFAULT_EDITOR "vi" +#endif + +const char *git_editor(void) { - const char *editor, *terminal; + const char *editor = getenv("GIT_EDITOR"); + const char *terminal = getenv("TERM"); + int terminal_is_dumb = !terminal || !strcmp(terminal, "dumb"); - editor = getenv("GIT_EDITOR"); if (!editor && editor_program) editor = editor_program; - if (!editor) + if (!editor && !terminal_is_dumb) editor = getenv("VISUAL"); if (!editor) editor = getenv("EDITOR"); - terminal = getenv("TERM"); - if (!editor && (!terminal || !strcmp(terminal, "dumb"))) - return error("Terminal is dumb but no VISUAL nor EDITOR defined."); + if (!editor && terminal_is_dumb) + return NULL; + + if (!editor) + editor = DEFAULT_EDITOR; + + return editor; +} + +int launch_editor(const char *path, struct strbuf *buffer, const char *const *env) +{ + const char *editor = git_editor(); if (!editor) - editor = "vi"; + return error("Terminal is dumb, but EDITOR unset"); if (strcmp(editor, ":")) { size_t len = strlen(editor);