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 |