[PATCH 2 of 7 v3 flags] fancyopts: disallow true as a boolean flag default (API)

Yuya Nishihara yuya at tcha.org
Wed Sep 14 12:37:26 EDT 2016


On Wed, 14 Sep 2016 11:52:59 -0400, Augie Fackler wrote:
> > On Sep 14, 2016, at 11:30, Yuya Nishihara <yuya at tcha.org> wrote:
> Is the idea something like:
> 
> fancyopts.py:
> 
> unsetbool = object()
> 
> in commands.py:
> 
>  diffopts = [
> -     ('a', 'text', None, _('treat all files as text')),
> +     ('a', 'text', fancyopts.unsetbool, _('treat all files as text')),
> -     ('g', 'git', None, _('use git extended diff format')),
> +     ('g', 'git', fancyopts.unsetbool, _('use git extended diff format')),
> -     ('', 'nodates', None, _('omit dates from diff headers'))
> +     ('', 'nodates', fancyopts.unsetbool, _('omit dates from diff headers'))
>  ]

Yes.

> And then we could synthesize negated versions only for booleans that have
> fancyopts.unsetbool as the default?

No. My idea is to not set 'git' at all.

  default:  {}  # not {'git': None}
  --git:    {'git': True}
  --no-git: {'git': False}

and falls back to ui.configbool if 'git' not in opts.

My point is diffopts are special in that their defaults are configurable. Many
other boolean options have no such feature, so they can simply be default=None
(or False.)


More information about the Mercurial-devel mailing list