This will allow us to make the displayed length configurable
and/or dynamic.
Details
Details
Diff Detail
Diff Detail
- Repository
- rHG Mercurial
- Lint
Lint Skipped - Unit
Unit Tests Skipped
This will allow us to make the displayed length configurable
and/or dynamic.
| Lint Skipped |
| Unit Tests Skipped |
| Path | Packages | |||
|---|---|---|---|---|
| M | hgext/show.py (12 lines) | |||
| M | mercurial/templates/map-cmdline.show (4 lines) | |||
| M | tests/test-show.t (6 lines) |
| # TODO consider exposing longest shortest(node). | # TODO consider exposing longest shortest(node). | ||||
| for bm, node in sorted(marks.items()): | for bm, node in sorted(marks.items()): | ||||
| fm.startitem() | fm.startitem() | ||||
| fm.context(ctx=repo[node]) | fm.context(ctx=repo[node]) | ||||
| fm.write('bookmark', '%s', bm) | fm.write('bookmark', '%s', bm) | ||||
| fm.write('node', fm.hexfunc(node), fm.hexfunc(node)) | fm.write('node', fm.hexfunc(node), fm.hexfunc(node)) | ||||
| fm.data(active=bm == active, | fm.data(active=bm == active, | ||||
| longestbookmarklen=longestname) | longestbookmarklen=longestname, | ||||
| nodelen=5) | |||||
| @showview('stack', csettopic='stack') | @showview('stack', csettopic='stack') | ||||
| def showstack(ui, repo, displayer): | def showstack(ui, repo, displayer): | ||||
| """current line of work""" | """current line of work""" | ||||
| wdirctx = repo['.'] | wdirctx = repo['.'] | ||||
| if wdirctx.rev() == nullrev: | if wdirctx.rev() == nullrev: | ||||
| raise error.Abort(_('stack view only available when there is a ' | raise error.Abort(_('stack view only available when there is a ' | ||||
| 'working directory')) | 'working directory')) | ||||
| ctx = repo[rev] | ctx = repo[rev] | ||||
| if i: | if i: | ||||
| ui.write(': ') | ui.write(': ') | ||||
| else: | else: | ||||
| ui.write(' ') | ui.write(' ') | ||||
| ui.write(('o ')) | ui.write(('o ')) | ||||
| displayer.show(ctx) | displayer.show(ctx, nodelen=5) | ||||
| displayer.flush(ctx) | displayer.flush(ctx) | ||||
| ui.write('\n') | ui.write('\n') | ||||
| if i: | if i: | ||||
| ui.write(':/') | ui.write(':/') | ||||
| else: | else: | ||||
| ui.write(' /') | ui.write(' /') | ||||
| symbol = '@' if rev == wdirctx.rev() else 'o' | symbol = '@' if rev == wdirctx.rev() else 'o' | ||||
| if newheads: | if newheads: | ||||
| ui.write(': ') | ui.write(': ') | ||||
| else: | else: | ||||
| ui.write(' ') | ui.write(' ') | ||||
| ui.write(symbol, ' ') | ui.write(symbol, ' ') | ||||
| displayer.show(ctx) | displayer.show(ctx, nodelen=5) | ||||
| displayer.flush(ctx) | displayer.flush(ctx) | ||||
| ui.write('\n') | ui.write('\n') | ||||
| # TODO display histedit hint? | # TODO display histedit hint? | ||||
| if basectx: | if basectx: | ||||
| # Vertically and horizontally separate stack base from parent | # Vertically and horizontally separate stack base from parent | ||||
| # to reinforce stack boundary. | # to reinforce stack boundary. | ||||
| if newheads: | if newheads: | ||||
| ui.write(':/ ') | ui.write(':/ ') | ||||
| else: | else: | ||||
| ui.write(' / ') | ui.write(' / ') | ||||
| ui.write(_('(stack base)'), '\n', label='stack.label') | ui.write(_('(stack base)'), '\n', label='stack.label') | ||||
| ui.write(('o ')) | ui.write(('o ')) | ||||
| displayer.show(basectx) | displayer.show(basectx, nodelen=5) | ||||
| displayer.flush(basectx) | displayer.flush(basectx) | ||||
| ui.write('\n') | ui.write('\n') | ||||
| @revsetpredicate('_underway([commitage[, headage]])') | @revsetpredicate('_underway([commitage[, headage]])') | ||||
| def underwayrevset(repo, subset, x): | def underwayrevset(repo, subset, x): | ||||
| args = revset.getargsdict(x, 'underway', 'commitage headage') | args = revset.getargsdict(x, 'underway', 'commitage headage') | ||||
| if 'commitage' not in args: | if 'commitage' not in args: | ||||
| args['commitage'] = None | args['commitage'] = None | ||||
| def showwork(ui, repo, displayer): | def showwork(ui, repo, displayer): | ||||
| """changesets that aren't finished""" | """changesets that aren't finished""" | ||||
| # TODO support date-based limiting when calling revset. | # TODO support date-based limiting when calling revset. | ||||
| revs = repo.revs('sort(_underway(), topo)') | revs = repo.revs('sort(_underway(), topo)') | ||||
| revdag = graphmod.dagwalker(repo, revs) | revdag = graphmod.dagwalker(repo, revs) | ||||
| ui.setconfig('experimental', 'graphshorten', True) | ui.setconfig('experimental', 'graphshorten', True) | ||||
| cmdutil.displaygraph(ui, repo, revdag, displayer, graphmod.asciiedges) | cmdutil.displaygraph(ui, repo, revdag, displayer, graphmod.asciiedges, | ||||
| props={'nodelen': 5}) | |||||
| def extsetup(ui): | def extsetup(ui): | ||||
| # Alias `hg <prefix><view>` to `hg show <view>`. | # Alias `hg <prefix><view>` to `hg show <view>`. | ||||
| for prefix in ui.configlist('commands', 'show.aliasprefix'): | for prefix in ui.configlist('commands', 'show.aliasprefix'): | ||||
| for view in showview._table: | for view in showview._table: | ||||
| name = '%s%s' % (prefix, view) | name = '%s%s' % (prefix, view) | ||||
| choice, allcommands = cmdutil.findpossible(name, commands.table, | choice, allcommands = cmdutil.findpossible(name, commands.table, | ||||
| # TODO there are a few deficiencies in this file: | # TODO there are a few deficiencies in this file: | ||||
| # * The "namespace" of the labels needs to be worked out. We currently | # * The "namespace" of the labels needs to be worked out. We currently | ||||
| # piggyback on existing values so color works. | # piggyback on existing values so color works. | ||||
| # * Obsolescence isn't considered for node labels. See _cset_labels in | # * Obsolescence isn't considered for node labels. See _cset_labels in | ||||
| # map-cmdline.default. | # map-cmdline.default. | ||||
| showbookmarks = '{if(active, "*", " ")} {pad(bookmark, longestbookmarklen + 4)}{shortest(node, 5)}\n' | showbookmarks = '{if(active, "*", " ")} {pad(bookmark, longestbookmarklen + 4)}{shortest(node, nodelen)}\n' | ||||
| showwork = '{cset_shortnode}{namespaces % cset_namespace} {cset_shortdesc}' | showwork = '{cset_shortnode}{namespaces % cset_namespace} {cset_shortdesc}' | ||||
| showstack = '{showwork}' | showstack = '{showwork}' | ||||
| cset_shortnode = '{label("log.changeset changeset.{phase}", shortest(node, 5))}' | cset_shortnode = '{label("log.changeset changeset.{phase}", shortest(node, nodelen))}' | ||||
| # Treat branch and tags specially so we don't display "default" or "tip" | # Treat branch and tags specially so we don't display "default" or "tip" | ||||
| cset_namespace = '{ifeq(namespace, "branches", names_branches, ifeq(namespace, "tags", names_tags, names_others))}' | cset_namespace = '{ifeq(namespace, "branches", names_branches, ifeq(namespace, "tags", names_tags, names_others))}' | ||||
| names_branches = '{ifeq(branch, "default", "", " ({label('log.{colorname}', branch)})")}' | names_branches = '{ifeq(branch, "default", "", " ({label('log.{colorname}', branch)})")}' | ||||
| names_tags = '{if(names % "{ifeq(name, 'tip', '', name)}", " ({label('log.{colorname}', join(names % "{ifeq(name, 'tip', '', name)}", ' '))})")}' | names_tags = '{if(names % "{ifeq(name, 'tip', '', name)}", " ({label('log.{colorname}', join(names % "{ifeq(name, 'tip', '', name)}", ' '))})")}' | ||||
| names_others = '{if(names, " ({label('log.{colorname}', join(names, ' '))})")}' | names_others = '{if(names, " ({label('log.{colorname}', join(names, ' '))})")}' | ||||
| cset_shortdesc = '{label("log.description", desc|firstline)}' | cset_shortdesc = '{label("log.description", desc|firstline)}' | ||||
| bookmarks JSON works | bookmarks JSON works | ||||
| $ hg show bookmarks -T json | $ hg show bookmarks -T json | ||||
| [ | [ | ||||
| { | { | ||||
| "active": true, | "active": true, | ||||
| "bookmark": "a-longer-bookmark", | "bookmark": "a-longer-bookmark", | ||||
| "longestbookmarklen": 17, | "longestbookmarklen": 17, | ||||
| "node": "7b5709ab64cbc34da9b4367b64afff47f2c4ee83" | "node": "7b5709ab64cbc34da9b4367b64afff47f2c4ee83", | ||||
| "nodelen": 5 | |||||
| }, | }, | ||||
| { | { | ||||
| "active": false, | "active": false, | ||||
| "bookmark": "book1", | "bookmark": "book1", | ||||
| "longestbookmarklen": 17, | "longestbookmarklen": 17, | ||||
| "node": "b757f780b8ffd71267c6ccb32e0882d9d32a8cc0" | "node": "b757f780b8ffd71267c6ccb32e0882d9d32a8cc0", | ||||
| "nodelen": 5 | |||||
| } | } | ||||
| ] | ] | ||||
| JSON works with no bookmarks | JSON works with no bookmarks | ||||
| $ hg book -d a-longer-bookmark | $ hg book -d a-longer-bookmark | ||||
| $ hg book -d book1 | $ hg book -d book1 | ||||
| $ hg show bookmarks -T json | $ hg show bookmarks -T json | ||||