[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