[PATCH 7 of 8 STABLE] pager: unify handling of 'ui.pager' and '--pager'
Martin von Zweigbergk
martinvonz at google.com
Mon May 1 13:33:16 EDT 2017
On Mon, May 1, 2017 at 9:12 AM, Pierre-Yves David
<pierre-yves.david at ens-lyon.org> wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
> # Date 1493651095 -7200
> # Mon May 01 17:04:55 2017 +0200
> # Branch stable
> # Node ID 2605f6e2ed168e6915fba6df575d80b962418ec6
> # Parent bdd42fa505b60739fa337e683a0f64b8dc1c4707
> # EXP-Topic pager
> # Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
> # hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r 2605f6e2ed16
> pager: unify handling of 'ui.pager' and '--pager'
>
> This is similar to what we do with 'ui.color' and '--color'. Both now takes the
> same possible values. The config option act as a default for the global command
> line flag.
>
> In practice, this means 'ui.color' can now accept 'auto' as a value.
>
> diff --git a/hgext/pager.py b/hgext/pager.py
> --- a/hgext/pager.py
> +++ b/hgext/pager.py
> @@ -39,7 +39,10 @@ testedwith = 'ships-with-hg-core'
> def uisetup(ui):
>
> def pagecmd(orig, ui, options, cmd, cmdfunc):
> - auto = options['pager'] == 'auto'
> + pageropt = options.get('pager')
> + if not pageropt:
> + pageropt = ui.config('ui', 'pager', 'auto')
> + auto = pageropt == 'auto'
> if auto and not ui.pageractive:
> usepager = False
> attend = ui.configlist('pager', 'attend', attended)
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -99,7 +99,7 @@ globalopts = [
> ('', 'version', None, _('output version information and exit')),
> ('h', 'help', None, _('display help and exit')),
> ('', 'hidden', False, _('consider hidden changesets')),
> - ('', 'pager', 'auto',
> + ('', 'pager', '',
> _("when to paginate (boolean, always, auto, or never)"), _('TYPE')),
> ]
>
> diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py
> --- a/mercurial/dispatch.py
> +++ b/mercurial/dispatch.py
> @@ -833,9 +833,13 @@ def _dispatch(req):
> for ui_ in uis:
> ui_.setconfig('ui', 'interactive', 'off', '-y')
>
> - if util.parsebool(options['pager']):
> + pageropt = options.get('pager')
> + if not pageropt:
> + pageropt = ui.config('ui', 'pager', 'auto')
> +
> + if util.parsebool(pageropt):
> ui.pager('internal-always-' + cmd)
> - elif options['pager'] != 'auto':
> + elif pageropt != 'auto':
> ui.disablepager()
>
> if cmdoptions.get('insecure', False):
> diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt
> --- a/mercurial/help/config.txt
> +++ b/mercurial/help/config.txt
> @@ -1963,8 +1963,8 @@ User interface controls.
> not a directory, one will be created.
>
> ``pager``
> - Control the pagination of command output (default: True). See :hg:`help pager`
> - for details.
> + Control the pagination of command output. Possible values are: on, auto, off
> + (defaul: auto). See :hg:`help pager` for details.
The possible values for --pager was documented as "boolean, always,
auto, or never". Same for --color (except that it also allows
"debug"). ui.color is documented to support "auto, always, never, or
debug". Seems like we should pick one way of describing it. I vote for
copying the texts from the --pager/color descriptions.
>
> ``patch``
> An optional external tool that ``hg import`` and some extensions
> diff --git a/mercurial/help/pager.txt b/mercurial/help/pager.txt
> --- a/mercurial/help/pager.txt
> +++ b/mercurial/help/pager.txt
> @@ -27,9 +27,8 @@ you can use --pager=<value>:
> - suppress the pager: `no` or `off` (any unrecognized value
> will also work).
>
> -To globally turn off all attempts to use a pager, set::
> +You can use the `ui.pager` option to set a different default. For example, to
> +globally turn off all attempts to use a pager, set::
>
> [ui]
> - pager = false
> -
> -which will prevent the pager from running.
> + pager = off
> diff --git a/mercurial/ui.py b/mercurial/ui.py
> --- a/mercurial/ui.py
> +++ b/mercurial/ui.py
> @@ -846,7 +846,6 @@ class ui(object):
> if (self._disablepager
> or self.pageractive
> or command in self.configlist('pager', 'ignore')
> - or not self.configbool('ui', 'pager', True)
> or not self.configbool('pager', 'attend-' + command, True)
> # TODO: if we want to allow HGPLAINEXCEPT=pager,
> # formatted() will need some adjustment.
> diff --git a/tests/test-extension.t b/tests/test-extension.t
> --- a/tests/test-extension.t
> +++ b/tests/test-extension.t
> @@ -546,7 +546,6 @@ hide outer repo
> -h --help display help and exit
> --hidden consider hidden changesets
> --pager TYPE when to paginate (boolean, always, auto, or never)
> - (default: auto)
>
>
>
> @@ -585,7 +584,6 @@ hide outer repo
> -h --help display help and exit
> --hidden consider hidden changesets
> --pager TYPE when to paginate (boolean, always, auto, or never)
> - (default: auto)
>
>
>
> @@ -867,7 +865,6 @@ extension help itself
> -h --help display help and exit
> --hidden consider hidden changesets
> --pager TYPE when to paginate (boolean, always, auto, or never)
> - (default: auto)
>
> Make sure that single '-v' option shows help and built-ins only for 'dodo' command
> $ hg help -v dodo
> @@ -904,7 +901,6 @@ Make sure that single '-v' option shows
> -h --help display help and exit
> --hidden consider hidden changesets
> --pager TYPE when to paginate (boolean, always, auto, or never)
> - (default: auto)
>
> In case when extension name doesn't match any of its commands,
> help message should ask for '-v' to get list of built-in aliases
> @@ -979,7 +975,6 @@ help options '-v' and '-v -e' should be
> -h --help display help and exit
> --hidden consider hidden changesets
> --pager TYPE when to paginate (boolean, always, auto, or never)
> - (default: auto)
>
> $ hg help -v -e dudu
> dudu extension -
> @@ -1015,7 +1010,6 @@ help options '-v' and '-v -e' should be
> -h --help display help and exit
> --hidden consider hidden changesets
> --pager TYPE when to paginate (boolean, always, auto, or never)
> - (default: auto)
>
> Disabled extension commands:
>
> diff --git a/tests/test-help.t b/tests/test-help.t
> --- a/tests/test-help.t
> +++ b/tests/test-help.t
> @@ -333,7 +333,6 @@ Test short command list with verbose opt
> -h --help display help and exit
> --hidden consider hidden changesets
> --pager TYPE when to paginate (boolean, always, auto, or never)
> - (default: auto)
>
> (use 'hg help' for the full list of commands)
>
> @@ -433,7 +432,6 @@ Verbose help for add
> -h --help display help and exit
> --hidden consider hidden changesets
> --pager TYPE when to paginate (boolean, always, auto, or never)
> - (default: auto)
>
> Test the textwidth config option
>
> @@ -2626,7 +2624,7 @@ Dish up an empty repo; serve it cold.
> <td>consider hidden changesets</td></tr>
> <tr><td></td>
> <td>--pager TYPE</td>
> - <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
> + <td>when to paginate (boolean, always, auto, or never)</td></tr>
> </table>
>
> </div>
> @@ -2827,7 +2825,7 @@ Dish up an empty repo; serve it cold.
> <td>consider hidden changesets</td></tr>
> <tr><td></td>
> <td>--pager TYPE</td>
> - <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
> + <td>when to paginate (boolean, always, auto, or never)</td></tr>
> </table>
>
> </div>
> diff --git a/tests/test-pager.t b/tests/test-pager.t
> --- a/tests/test-pager.t
> +++ b/tests/test-pager.t
> @@ -68,6 +68,13 @@ We can control the pager from the config
> date: Thu Jan 01 00:00:00 1970 +0000
> summary: modify a 10
>
> + $ hg log --limit 1 --config 'ui.pager=off'
> + changeset: 10:46106edeeb38
> + tag: tip
> + user: test
> + date: Thu Jan 01 00:00:00 1970 +0000
> + summary: modify a 10
> +
> $ hg log --limit 1 --config 'ui.pager=1'
> paged! 'changeset: 10:46106edeeb38\n'
> paged! 'tag: tip\n'
> @@ -75,6 +82,37 @@ We can control the pager from the config
> paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
> paged! 'summary: modify a 10\n'
> paged! '\n'
> + $ hg log --limit 1 --config 'ui.pager=on'
> + paged! 'changeset: 10:46106edeeb38\n'
> + paged! 'tag: tip\n'
> + paged! 'user: test\n'
> + paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
> + paged! 'summary: modify a 10\n'
> + paged! '\n'
> + $ hg log --limit 1 --config 'ui.pager=auto'
> + paged! 'changeset: 10:46106edeeb38\n'
> + paged! 'tag: tip\n'
> + paged! 'user: test\n'
> + paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
> + paged! 'summary: modify a 10\n'
> + paged! '\n'
> +
> +The --pager option is stronger than the config
> +
> + $ hg log --limit 1 --config 'ui.pager=off' --pager=on
> + paged! 'changeset: 10:46106edeeb38\n'
> + paged! 'tag: tip\n'
> + paged! 'user: test\n'
> + paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
> + paged! 'summary: modify a 10\n'
> + paged! '\n'
> + $ hg log --limit 1 --config 'ui.pager=on' --pager=off
> + changeset: 10:46106edeeb38
> + tag: tip
> + user: test
> + date: Thu Jan 01 00:00:00 1970 +0000
> + summary: modify a 10
> +
>
> We can enable the pager on id:
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list