[PATCH 2 of 2] pager: add global --paginate/--no-pager options

Brodie Rao brodie at bitheap.org
Sun Aug 22 15:19:59 CDT 2010


On Aug 22, 2010, at 2:11 PM, Augie Fackler wrote:

>
> On Aug 22, 2010, at 11:24 AM, Brodie Rao wrote:
>
>> On Aug 22, 2010, at 10:03 AM, Augie Fackler wrote:
>>
>>>
>>> On Aug 21, 2010, at 10:17 PM, Brodie Rao wrote:
>>>
>>>> # HG changeset patch
>>>> # User Brodie Rao <brodie at bitheap.org>
>>>> # Date 1282447030 14400
>>>> # Node ID 3dff96bfd886be74c9c1c151a1ca76be0a133fc3
>>>> # Parent  2f351b05d85db8e243156141398217bdf30f01c5
>>>> pager: add global --paginate/--no-pager options
>>>>
>>>> diff -r 2f351b05d85d -r 3dff96bfd886 hgext/pager.py
>>>> --- a/hgext/pager.py	Sat Aug 21 23:11:35 2010 -0400
>>>> +++ b/hgext/pager.py	Sat Aug 21 23:17:10 2010 -0400
>>>> @@ -47,10 +47,14 @@ If pager.attend is present, pager.ignore
>>>>
>>>> To ignore global commands like :hg:`version` or :hg:`help`, you  
>>>> have
>>>> to specify them in the global .hgrc
>>>> +
>>>> +The --paginate and --no-pager options can also be used to control
>>>> +when then pager is used.
>>>
>>> Would it make sense for both of these flags to instead be a -- 
>>> pager flag which took never,always,auto much like the --color flag  
>>> for the color extension?
>>
>> I thought about that, but most programs that provide a --pager flag  
>> require to have an argument with the pager you want to use (e.g., -- 
>> pager='less -foo -bar...'). Git has both --paginate and --no-pager  
>> that work the same way as in this patch.
>>
>> I'm not opposed to making it --pager, though I think I'd rather it  
>> be --pager=<off,on,auto>. It wouldn't be consistent with --color  
>> but it'd be less to type.
>
> Perhaps it could be --paginate=<off,never,on,always,auto> and leave  
> the --pager flag free for changing the pager if desired? Or we could  
> just assume people won't have a pager named one of those 5 things  
> and overload the meaning, but that feels nasty to me somehow.

I don't think providing a --pager=cmd flag would be that useful. If  
you're going to do the on/off/auto thing, I'd just use --pager.

> Any objection if I whip up a patch to let color take all 5 of those  
> options for the --color flag?

Are you going to add those options to the flag's help string? That  
would end up looking kind of ridiculous, I think.

>>
>>>> '''
>>>>
>>>> import sys, os, signal, shlex, errno
>>>> -from mercurial import dispatch, util, extensions
>>>> +from mercurial import commands, dispatch, util, extensions
>>>> +from mercurial.i18n import _
>>>>
>>>> def _runpager(p):
>>>>  if not hasattr(os, 'fork'):
>>>> @@ -83,9 +87,10 @@ def uisetup(ui):
>>>>
>>>>  def pagecmd(orig, ui, options, cmd, cmdfunc):
>>>>      p = ui.config("pager", "pager", os.environ.get("PAGER"))
>>>> -        if p and sys.stdout.isatty() and '--debugger' not in  
>>>> sys.argv:
>>>> +        if (not options['no_pager'] and p and sys.stdout.isatty 
>>>> () and
>>>> +            '--debugger' not in sys.argv):
>>>>          attend = ui.configlist('pager', 'attend', attended)
>>>> -            if (cmd in attend or
>>>> +            if (options['paginate'] or 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)
>>>> @@ -96,4 +101,9 @@ def uisetup(ui):
>>>>
>>>>  extensions.wrapfunction(dispatch, '_runcommand', pagecmd)
>>>>
>>>> +commands.globalopts.extend([('', 'paginate', None,
>>>> +                             _('enable paginated output')),
>>>> +                            ('', 'no-pager', None,
>>>> +                             _('disable paginated output'))])
>>>> +
>>>> attended = ['annotate', 'cat', 'diff', 'export', 'glog', 'log',  
>>>> 'qdiff']
>>>> _______________________________________________
>>>> Mercurial-devel mailing list
>>>> Mercurial-devel at selenic.com
>>>> http://selenic.com/mailman/listinfo/mercurial-devel
>>>
>>
>



More information about the Mercurial-devel mailing list