Patchwork pager: honour internal aliases

login
register
mail settings
Submitter David Soria Parra
Date Oct. 21, 2013, 2:18 a.m.
Message ID <04dd8d9ca0ce2ddd279e.1382321902@achird.localdomain>
Download mbox | patch
Permalink /patch/2793/
State Accepted
Commit 7d99bff0f77cb40f92e13ad17f9c67d9fe07e2a1
Headers show

Comments

David Soria Parra - Oct. 21, 2013, 2:18 a.m.
# HG changeset patch
# User David Soria Parra <dsp@experimentalworks.net>
# Date 1381629094 25200
#      Sat Oct 12 18:51:34 2013 -0700
# Node ID 04dd8d9ca0ce2ddd279eddb9af82f5742cc8bd87
# Parent  ab2362e1672e341d13b0f2546b672122b2eb5ced
pager: honour internal aliases

If paging is configured for a command all it's internal defined aliases
will be paged as well. This will make attend=log cause 'hg history'
to run the pager. However custom aliases will not be paged by default.
Matt Mackall - Oct. 21, 2013, 5:52 a.m.
On Sun, 2013-10-20 at 19:18 -0700, David Soria Parra wrote:
> # HG changeset patch
> # User David Soria Parra <dsp@experimentalworks.net>
> # Date 1381629094 25200
> #      Sat Oct 12 18:51:34 2013 -0700
> # Node ID 04dd8d9ca0ce2ddd279eddb9af82f5742cc8bd87
> # Parent  ab2362e1672e341d13b0f2546b672122b2eb5ced
> pager: honour internal aliases

Queued for stable, thanks.

Patch

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,20 @@ 
             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, _ = cmdutil.findcmd(cmd, commands.table)
+
+            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)