[PATCH] pager: honour aliases (issue3532)
David Soria Parra
dsp at experimentalworks.net
Sat Oct 12 21:01:58 CDT 2013
# HG changeset patch
# User David Soria Parra <dsp at experimentalworks.net>
# Date 1381629094 25200
# Sat Oct 12 18:51:34 2013 -0700
# Node ID 39084a836b0525cbcabc60b5200e83a5cd91577d
# Parent 1b2f9d36953e6ed384a044c1e73cb3a1aa072004
pager: honour aliases (issue3532)
If paging is configured for a command all it's aliases will be paged as
well. This will make attend=log cause 'hg history' to run the pager as
well as custom aliases defined with [alias].
diff --git a/hgext/pager.py b/hgext/pager.py
--- a/hgext/pager.py
+++ b/hgext/pager.py
@@ -48,7 +48,7 @@
'''
import atexit, sys, os, signal, subprocess, errno, shlex
-from mercurial import commands, dispatch, util, extensions
+from mercurial import commands, dispatch, util, extensions, cmdutil
from mercurial.i18n import _
testedwith = 'internal'
@@ -121,14 +121,22 @@
attend = ui.configlist('pager', 'attend', attended)
auto = options['pager'] == 'auto'
always = util.parsebool(options['pager'])
- if (always or auto and
- (cmd in attend or
- (cmd not in ui.configlist('pager', 'ignore') and not attend))):
- ui.setconfig('ui', 'formatted', ui.formatted())
- ui.setconfig('ui', 'interactive', False)
- if util.safehasattr(signal, "SIGPIPE"):
- signal.signal(signal.SIGPIPE, signal.SIG_DFL)
- _runpager(ui, p)
+
+ cmds, (alias, _, _) = cmdutil.findcmd(cmd, commands.table)
+ if util.safehasattr(alias, 'cmdname'):
+ cmds.append(alias.cmdname)
+
+ ignore = ui.configlist('pager', 'ignore')
+ for cmd in cmds:
+ if (always or auto and
+ (cmd in attend or
+ (cmd not in ignore and not attend))):
+ ui.setconfig('ui', 'formatted', ui.formatted())
+ ui.setconfig('ui', 'interactive', False)
+ if util.safehasattr(signal, "SIGPIPE"):
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+ _runpager(ui, p)
+ break
return orig(ui, options, cmd, cmdfunc)
extensions.wrapfunction(dispatch, '_runcommand', pagecmd)
More information about the Mercurial-devel
mailing list