[PATCH] pager: honour aliases (issue3532)
Augie Fackler
raf at durin42.com
Wed Oct 16 14:22:46 UTC 2013
On Sat, Oct 12, 2013 at 07:01:58PM -0700, David Soria Parra wrote:
> # 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)
Hm, I could see going both ways on this. After all, using an alias is
one of the "normal" ways to bypass configuration on a given command,
isn't it?
I don't use pager though, so it won't matter for me one way or the other.
>
> 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)
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list