launch_editor(): Heed GIT_EDITOR and core.editor settings
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Fri, 20 Jul 2007 12:06:09 +0000 (13:06 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sat, 21 Jul 2007 23:51:14 +0000 (16:51 -0700)
In the commit 'Add GIT_EDITOR environment and core.editor
configuration variables', this was done for the shell scripts.
Port it over to builtin-tag's version of launch_editor(), which
is just about to be refactored into editor.c.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-tag.c
cache.h
config.c
environment.c

index 507f51076da92f241859ed940e5332f79278e092..81d37ce9015d108ac16038cb6c9e12a6b4a197b9 100644 (file)
@@ -24,7 +24,11 @@ static void launch_editor(const char *path, char **buffer, unsigned long *len)
        const char *args[3];
        int fd;
 
-       editor = getenv("VISUAL");
+       editor = getenv("GIT_EDITOR");
+       if (!editor && editor_program)
+               editor = editor_program;
+       if (!editor)
+               editor = getenv("VISUAL");
        if (!editor)
                editor = getenv("EDITOR");
 
@@ -249,9 +253,9 @@ static void create_tag(const unsigned char *object, const char *tag,
                       char *message, int sign, unsigned char *result)
 {
        enum object_type type;
-       char header_buf[1024], *buffer;
+       char header_buf[1024], *buffer = NULL;
        int header_len, max_size;
-       unsigned long size;
+       unsigned long size = 0;
 
        type = sha1_object_info(object, NULL);
        if (type <= 0)
diff --git a/cache.h b/cache.h
index 53801b8089e0fbea5e36414432ef9aa7d1313781..67b1af16d9f06a76ed9616df9c96ce4b1f839bd4 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -560,6 +560,8 @@ extern char *pager_program;
 extern int pager_in_use;
 extern int pager_use_color;
 
+extern char *editor_program;
+
 /* base85 */
 int decode_85(char *dst, const char *line, int linelen);
 void encode_85(char *buf, const unsigned char *data, int bytes);
index f89a61191591c1242ba8fb3ac5b03330cdb1c06b..103b4fcc61192d18c63b198a5eb37bbdf154a6b0 100644 (file)
--- a/config.c
+++ b/config.c
@@ -426,6 +426,11 @@ int git_default_config(const char *var, const char *value)
                return 0;
        }
 
+       if (!strcmp(var, "core.editor")) {
+               editor_program = xstrdup(value);
+               return 0;
+       }
+
        /* Add other config variables here and to Documentation/config.txt. */
        return 0;
 }
index f83fb9e44806c03cde06eede7888a4dcb901c5c3..35d3f4b595872c39c640ca0f71e7846d3ad053f2 100644 (file)
@@ -33,6 +33,7 @@ size_t delta_base_cache_limit = 16 * 1024 * 1024;
 char *pager_program;
 int pager_in_use;
 int pager_use_color = 1;
+char *editor_program;
 int auto_crlf = 0;     /* 1: both ways, -1: only when adding git objects */
 
 static const char *git_dir;