[PATCH] pager: honour aliases (issue3532)

Augie Fackler raf at durin42.com
Wed Oct 16 09:22:46 CDT 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