diff -r 20fb4195bfc4 -r acbbf7f0751e hgext3rd/topic/__init__.py --- a/hgext3rd/topic/__init__.py Sat Aug 13 00:13:05 2016 +0200 +++ b/hgext3rd/topic/__init__.py Sat Aug 13 00:37:33 2016 +0200 @@ -263,7 +263,7 @@ with repo.vfs.open('topic', 'w') as f: f.write(topic) return - _listtopics(ui, repo) + _listtopics(ui, repo, opts) @command('stack [TOPIC]', [] + commands.formatteropts) def cmdstack(ui, repo, topic='', **opts): @@ -272,11 +272,24 @@ List the current topic by default.""" return stack.showstack(ui, repo, topic, opts) -def _listtopics(ui, repo): - current = repo.currenttopic - for t in sorted(repo.topics): - marker = '*' if t == current else ' ' - ui.write(' %s %s\n' % (marker, t)) +def _listtopics(ui, repo, opts): + fm = ui.formatter('bookmarks', opts) + activetopic = repo.currenttopic + for topic in sorted(repo.topics): + fm.startitem() + marker = ' ' + label = 'topic' + active = (topic == activetopic) + if active: + marker = '*' + label = 'topic.active' + if not ui.quiet: + # registering the active data is made explicitly later + fm.plain(' %s ' % marker, label=label) + fm.write('topic', '%s', topic, label=label) + fm.data(active=active) + fm.plain('\n') + fm.end() def summaryhook(ui, repo): t = repo.currenttopic