Show More
@@ -218,6 +218,15 b' def notset(repo, subset, x, order):' | |||
|
218 | 218 | def relationset(repo, subset, x, y, order): |
|
219 | 219 | raise error.ParseError(_("can't use a relation in this context")) |
|
220 | 220 | |
|
221 | def generationsrel(repo, subset, x, rel, n, order): | |
|
222 | # TODO: support range, rewrite tests, and drop startdepth argument | |
|
223 | # from ancestors() and descendants() predicates | |
|
224 | if n <= 0: | |
|
225 | n = -n | |
|
226 | return _ancestors(repo, subset, x, startdepth=n, stopdepth=n + 1) | |
|
227 | else: | |
|
228 | return _descendants(repo, subset, x, startdepth=n, stopdepth=n + 1) | |
|
229 | ||
|
221 | 230 | def relsubscriptset(repo, subset, x, y, z, order): |
|
222 | 231 | # this is pretty basic implementation of 'x#y[z]' operator, still |
|
223 | 232 | # experimental so undocumented. see the wiki for further ideas. |
@@ -225,17 +234,11 b' def relsubscriptset(repo, subset, x, y, ' | |||
|
225 | 234 | rel = getsymbol(y) |
|
226 | 235 | n = getinteger(z, _("relation subscript must be an integer")) |
|
227 | 236 | |
|
228 | # TODO: perhaps this should be a table of relation functions | |
|
229 | if rel in ('g', 'generations'): | |
|
230 | # TODO: support range, rewrite tests, and drop startdepth argument | |
|
231 | # from ancestors() and descendants() predicates | |
|
232 | if n <= 0: | |
|
233 | n = -n | |
|
234 | return _ancestors(repo, subset, x, startdepth=n, stopdepth=n + 1) | |
|
235 | else: | |
|
236 | return _descendants(repo, subset, x, startdepth=n, stopdepth=n + 1) | |
|
237 | if rel in subscriptrelations: | |
|
238 | return subscriptrelations[rel](repo, subset, x, rel, n, order) | |
|
237 | 239 | |
|
238 | raise error.UnknownIdentifier(rel, ['generations']) | |
|
240 | relnames = [r for r in subscriptrelations.keys() if len(r) > 1] | |
|
241 | raise error.UnknownIdentifier(rel, relnames) | |
|
239 | 242 | |
|
240 | 243 | def subscriptset(repo, subset, x, y, order): |
|
241 | 244 | raise error.ParseError(_("can't use a subscript in this context")) |
@@ -2215,6 +2218,11 b' methods = {' | |||
|
2215 | 2218 | "parentpost": parentpost, |
|
2216 | 2219 | } |
|
2217 | 2220 | |
|
2221 | subscriptrelations = { | |
|
2222 | "g": generationsrel, | |
|
2223 | "generations": generationsrel, | |
|
2224 | } | |
|
2225 | ||
|
2218 | 2226 | def lookupfn(repo): |
|
2219 | 2227 | return lambda symbol: scmutil.isrevsymbol(repo, symbol) |
|
2220 | 2228 |
@@ -649,6 +649,17 b' parse errors of relation, subscript and ' | |||
|
649 | 649 | hg: parse error: relation subscript must be an integer |
|
650 | 650 | [255] |
|
651 | 651 | |
|
652 | suggested relations | |
|
653 | ||
|
654 | $ hg debugrevspec '.#generafions[0]' | |
|
655 | hg: parse error: unknown identifier: generafions | |
|
656 | (did you mean generations?) | |
|
657 | [255] | |
|
658 | ||
|
659 | $ hg debugrevspec '.#f[0]' | |
|
660 | hg: parse error: unknown identifier: f | |
|
661 | [255] | |
|
662 | ||
|
652 | 663 | parsed tree at stages: |
|
653 | 664 | |
|
654 | 665 | $ hg debugrevspec -p all '()' |
General Comments 0
You need to be logged in to leave comments.
Login now