--- a/hgext/pager.py Mon Mar 31 11:08:52 2008 +0200
+++ b/hgext/pager.py Sat Mar 29 19:41:50 2008 +0100
@@ -24,12 +24,37 @@
#
# [pager]
# quiet = True
+#
+# You can disable the pager for certain commands by adding them to the
+# pager.ignore list:
+#
+# [pager]
+# ignore = version, help, update
+#
+# You can also enable the pager only for certain commands using pager.attend:
+#
+# [pager]
+# attend = log
+#
+# If pager.attend is present, pager.ignore will be ignored.
+#
+# To ignore global commands like 'hg version' or 'hg help', you have to specify them
+# in the global .hgrc
import sys, os, signal
+from mercurial import dispatch
def uisetup(ui):
- p = ui.config("pager", "pager", os.environ.get("PAGER"))
- if p and sys.stdout.isatty():
- if ui.configbool('pager', 'quiet'):
- signal.signal(signal.SIGPIPE, signal.SIG_DFL)
- sys.stderr = sys.stdout = os.popen(p, "wb")
+ def pagecmd(ui, options, cmd, cmdfunc):
+ p = ui.config("pager", "pager", os.environ.get("PAGER"))
+ if p and sys.stdout.isatty():
+ attend = ui.configlist('pager', 'attend')
+ if (cmd in attend or
+ (cmd not in ui.configlist('pager', 'ignore') and not attend)):
+ sys.stderr = sys.stdout = os.popen(p, "wb")
+ if ui.configbool('pager', 'quiet'):
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+ return oldrun(ui, options, cmd, cmdfunc)
+
+ oldrun = dispatch._runcommand
+ dispatch._runcommand = pagecmd