diff -r a339027902c4 -r 16ed67164002 mercurial/templatekw.py --- a/mercurial/templatekw.py Fri Jul 07 23:13:04 2017 +0900 +++ b/mercurial/templatekw.py Thu Jul 13 00:35:54 2017 +0900 @@ -59,6 +59,8 @@ yield makemap(x) def __contains__(self, x): return x in self._values + def __getitem__(self, key): + return self._values[key] def __len__(self): return len(self._values) def __iter__(self): @@ -591,6 +593,25 @@ return 'obsolete' return '' +@templatekeyword('peerpaths') +def showpeerpaths(repo, **args): + """A dictionary of repository locations defined in the [paths] section + of your configuration file.""" + # see commands.paths() for naming of dictionary keys + paths = util.sortdict() + for k, p in sorted(repo.ui.paths.iteritems()): + d = util.sortdict() + d['url'] = p.rawloc + d.update((o, v) for o, v in sorted(p.suboptions.iteritems())) + def f(): + yield d['url'] + paths[k] = hybriddict(d, gen=f()) + + # no hybriddict() since d['path'] can't be formatted as a string. perhaps + # hybriddict() should call templatefilters.stringify(d[value]). + return _hybrid(None, paths, lambda k: {'name': k, 'path': paths[k]}, + lambda d: '%s=%s' % (d['name'], d['path']['url'])) + @templatekeyword("predecessors") def showpredecessors(repo, ctx, **args): """Returns the list if the closest visible successors