summaryrefslogtreecommitdiff
path: root/builtin.h
diff options
context:
space:
mode:
authorMartin Ågren <martin.agren@gmail.com>2017-08-02 19:40:51 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-08-03 18:08:10 (GMT)
commit033fe3d92ca16c36fb45ed7cb58d42344088e7bd (patch)
treed6fc688e298b0574b957ece266ef82431368698e /builtin.h
parentc409824cc2abac46e06091fcb29639b048d23b5d (diff)
downloadgit-033fe3d92ca16c36fb45ed7cb58d42344088e7bd.zip
git-033fe3d92ca16c36fb45ed7cb58d42344088e7bd.tar.gz
git-033fe3d92ca16c36fb45ed7cb58d42344088e7bd.tar.bz2
git.c: provide setup_auto_pager()
The previous patch introduced a way for builtins to declare that they will take responsibility for handling the `pager.foo`-config item. (See the commit message of that patch for why that could be useful.) Provide setup_auto_pager(), which builtins can call in order to handle `pager.<cmd>`, including possibly starting the pager. Make this function don't do anything if a pager has already been started, as indicated by use_pager or pager_in_use(). Whenever this function is called from a builtin, git.c will already have called commit_pager_choice(). Since commit_pager_choice() treats the special value -1 as "punt" or "not yet decided", it is not a problem that we might end up calling commit_pager_choice() once in git.c and once (or more) in the builtin. Make the new function use -1 in the same way and document it as "punt". Don't add any users of setup_auto_pager just yet, one will follow in a later patch. Suggested-by: Jeff King <peff@peff.net> Signed-off-by: Martin Ågren <martin.agren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin.h')
-rw-r--r--builtin.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/builtin.h b/builtin.h
index 0f3a7b7..42378f3 100644
--- a/builtin.h
+++ b/builtin.h
@@ -113,6 +113,18 @@ struct fmt_merge_msg_opts {
extern int fmt_merge_msg(struct strbuf *in, struct strbuf *out,
struct fmt_merge_msg_opts *);
+/**
+ * If a built-in has DELAY_PAGER_CONFIG set, the built-in should call this early
+ * when it wishes to respect the `pager.foo`-config. The `cmd` is the name of
+ * the built-in, e.g., "foo". If a paging-choice has already been setup, this
+ * does nothing. The default in `def` should be 0 for "pager off", 1 for "pager
+ * on" or -1 for "punt".
+ *
+ * You should most likely use a default of 0 or 1. "Punt" (-1) could be useful
+ * to be able to fall back to some historical compatibility name.
+ */
+extern void setup_auto_pager(const char *cmd, int def);
+
extern int is_builtin(const char *s);
extern int cmd_add(int argc, const char **argv, const char *prefix);