From: Christian Couder <chriscool@tuxfamily.org>
To: Junio Hamano <junkio@cox.net>
Cc: git@vger.kernel.org
Subject: [PATCH 1/2] git-help: add "help.format" config variable.
Date: Wed, 12 Dec 2007 06:33:20 +0100 [thread overview]
Message-ID: <20071212063320.3cbb1698.chriscool@tuxfamily.org> (raw)
This config variable makes it possible to choose the default format
used to display help. This format will be used only if no option
like -a|--all|-i|--info|-m|--man|-w|--web is passed to "git-help".
The following values are possible for this variable:
- "man" --> "man" program is used
- "info" --> "info" program is used
- "web" --> "git-browse-help" is used
By default we still show help using "man".
By the way, this patch also adds -m|--man command line option to
use "man" even if something else is set in the "help.format"
config variable.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
Documentation/git-help.txt | 13 ++++++++-
git.c | 2 +-
help.c | 61 ++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 72 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-help.txt b/Documentation/git-help.txt
index ac9e15d..af5e5cb 100644
--- a/Documentation/git-help.txt
+++ b/Documentation/git-help.txt
@@ -7,7 +7,7 @@ git-help - display help information about git
SYNOPSIS
--------
-'git help' [-a|--all|-i|--info|-w|--web] [COMMAND]
+'git help' [-a|--all|-i|--info|-m|--man|-w|--web] [COMMAND]
DESCRIPTION
-----------
@@ -23,6 +23,12 @@ If a git command is named, a manual page for that command is brought
up. The 'man' program is used by default for this purpose, but this
can be overriden by other options.
+If no command line option is passed, the 'help.format' configuration
+variable will be checked. Supported values for this variable are
+"man", "info" and "web" (or "html" as a synonym to the latter). This
+makes git-help behave as if a command line option with the same long
+name as been passed to it.
+
Note that 'git --help ...' is identical as 'git help ...' because the
former is internally converted into the latter.
@@ -36,6 +42,11 @@ OPTIONS
Use the 'info' program to display the manual page, instead of
the 'man' program that is used by default.
+-m|--man::
+ Use the 'man' program to display the manual page. This may be
+ used to override a value set in the 'help.format'
+ configuration variable.
+
-w|--web::
Use a web browser to display the HTML manual page, instead of
the 'man' program that is used by default.
diff --git a/git.c b/git.c
index 4f9876e..d46b63d 100644
--- a/git.c
+++ b/git.c
@@ -324,7 +324,7 @@ static void handle_internal_command(int argc, const char **argv)
{ "gc", cmd_gc, RUN_SETUP },
{ "get-tar-commit-id", cmd_get_tar_commit_id },
{ "grep", cmd_grep, RUN_SETUP | USE_PAGER },
- { "help", cmd_help },
+ { "help", cmd_help, RUN_SETUP },
#ifndef NO_CURL
{ "http-fetch", cmd_http_fetch, RUN_SETUP },
#endif
diff --git a/help.c b/help.c
index c96b167..af0a433 100644
--- a/help.c
+++ b/help.c
@@ -8,6 +8,44 @@
#include "exec_cmd.h"
#include "common-cmds.h"
+static const char *help_default_format;
+
+static enum help_format {
+ man_format,
+ info_format,
+ web_format,
+} help_format = man_format;
+
+static void parse_help_format(const char *format)
+{
+ if (!format) {
+ help_format = man_format;
+ return;
+ }
+ if (!strcmp(format, "man")) {
+ help_format = man_format;
+ return;
+ }
+ if (!strcmp(format, "info")) {
+ help_format = info_format;
+ return;
+ }
+ if (!strcmp(format, "web") || !strcmp(format, "html")) {
+ help_format = web_format;
+ return;
+ }
+ die("unrecognized help format '%s'", format);
+}
+
+static int git_help_config(const char *var, const char *value)
+{
+ if (!strcmp(var, "help.format")) {
+ help_default_format = xstrdup(value);
+ return 0;
+ }
+ return git_default_config(var, value);
+}
+
/* most GUI terminals set COLUMNS (although some don't export it) */
static int term_columns(void)
{
@@ -331,8 +369,27 @@ int cmd_help(int argc, const char **argv, const char *prefix)
show_info_page(argc > 2 ? argv[2] : NULL);
}
- else
- show_man_page(help_cmd);
+ else if (!strcmp(help_cmd, "--man") || !strcmp(help_cmd, "-m")) {
+ show_man_page(argc > 2 ? argv[2] : NULL);
+ }
+
+ else {
+ git_config(git_help_config);
+ if (help_default_format)
+ parse_help_format(help_default_format);
+
+ switch (help_format) {
+ case man_format:
+ show_man_page(help_cmd);
+ break;
+ case info_format:
+ show_info_page(help_cmd);
+ break;
+ case web_format:
+ show_html_page(help_cmd);
+ break;
+ }
+ }
return 0;
}
--
1.5.3.7.2270.g786cf-dirty
next reply other threads:[~2007-12-12 5:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-12 5:33 Christian Couder [this message]
2007-12-12 9:04 ` [PATCH 1/2] git-help: add "help.format" config variable Junio C Hamano
2007-12-13 1:41 ` Junio C Hamano
2007-12-15 4:57 ` Christian Couder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071212063320.3cbb1698.chriscool@tuxfamily.org \
--to=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).