This exposes the launch_editor() library function for use by various scripting languages. This allows the ensure consistent handling of GIT_EDITOR/VISUAL/EDITOR environment variables as well as the handling of special characters such as spaces in the various environment variables. Signed-off-by: Eric Wong <normalperson@xxxxxxxx> --- I'm not sure if git-config is the best place to stick it. I plan to start using this in git-svn but I don't want to implement Git::Editor in Perl and have to keep track of editor.c. Of course this also makes the logic/rules used in libgit usable to any other scripting language capable of launching other programs. I'll probably also do something like this with setup_pager(), too... Documentation/git-config.txt | 10 ++++++++++ builtin-config.c | 6 +++++- 2 files changed, 15 insertions(+), 1 deletions(-) diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt index 19a8917..2dd9f1c 100644 --- a/Documentation/git-config.txt +++ b/Documentation/git-config.txt @@ -22,6 +22,7 @@ SYNOPSIS 'git config' [<file-option>] [-z|--null] -l | --list 'git config' [<file-option>] --get-color name [default] 'git config' [<file-option>] --get-colorbool name [stdout-is-tty] +'git config' [<file-option>] --exec-editor filename DESCRIPTION ----------- @@ -157,6 +158,15 @@ See also <<FILES>>. output. The optional `default` parameter is used instead, if there is no color configured for `name`. +--exec-editor filename:: + + Executes the editor on filename as configured by the + GIT_EDITOR/VISUAL/EDITOR environment variables (in that order). + This exposes the launch_editor() library function for use with + scripting languages that may not have C bindings. The + launch_editor() function takes into account special characters + such as spaces in the editor argument. + [[FILES]] FILES ----- diff --git a/builtin-config.c b/builtin-config.c index f710162..1c805da 100644 --- a/builtin-config.c +++ b/builtin-config.c @@ -3,7 +3,7 @@ #include "color.h" static const char git_config_set_usage[] = -"git config [ --global | --system | [ -f | --file ] config-file ] [ --bool | --int | --bool-or-int ] [ -z | --null ] [--get | --get-all | --get-regexp | --replace-all | --add | --unset | --unset-all] name [value [value_regex]] | --rename-section old_name new_name | --remove-section name | --list | --get-color var [default] | --get-colorbool name [stdout-is-tty]"; +"git config [ --global | --system | [ -f | --file ] config-file ] [ --bool | --int | --bool-or-int ] [ -z | --null ] [--get | --get-all | --get-regexp | --replace-all | --add | --unset | --unset-all] name [value [value_regex]] | --rename-section old_name new_name | --remove-section name | --list | --get-color var [default] | --get-colorbool name [stdout-is-tty] | --exec-editor filename"; static char *key; static regex_t *key_regexp; @@ -362,6 +362,10 @@ int cmd_config(int argc, const char **argv, const char *prefix) return get_color(argc-2, argv+2); } else if (!strcmp(argv[1], "--get-colorbool")) { return get_colorbool(argc-2, argv+2); + } else if (!strcmp(argv[1], "--exec-editor")) { + if (argc != 3) + usage(git_config_set_usage); + return launch_editor(argv[2], NULL, NULL); } else break; argc--; -- Eric Wong -- 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