fancyopts: allow all callable as default parameter value
The current fancyopts allows function as default parameter value
but not other callables.
By supporting other callables, we can have the benefits of e.g.,
custom __str__ method, which will be printed by 'hg help' as
the default value.
--- a/mercurial/fancyopts.py Fri Jun 12 16:11:42 2015 -0400
+++ b/mercurial/fancyopts.py Thu Jun 11 08:54:24 2015 -0400
@@ -103,8 +103,9 @@
# transfer result to state
for opt, val in opts:
name = argmap[opt]
- t = type(defmap[name])
- if t is type(fancyopts):
+ obj = defmap[name]
+ t = type(obj)
+ if callable(obj):
state[name] = defmap[name](val)
elif t is type(1):
try: