Show More
@@ -2161,10 +2161,10 b' def debugrevspec(ui, repo, expr):' | |||
|
2161 | 2161 | """ |
|
2162 | 2162 | if ui.verbose: |
|
2163 | 2163 | tree = revset.parse(expr)[0] |
|
2164 | ui.note(tree, "\n") | |
|
2164 | ui.note(revset.prettyformat(tree), "\n") | |
|
2165 | 2165 | newtree = revset.findaliases(ui, tree) |
|
2166 | 2166 | if newtree != tree: |
|
2167 | ui.note(newtree, "\n") | |
|
2167 | ui.note(revset.prettyformat(newtree), "\n") | |
|
2168 | 2168 | func = revset.match(ui, expr) |
|
2169 | 2169 | for c in func(repo, range(len(repo))): |
|
2170 | 2170 | ui.write("%s\n" % c) |
@@ -1319,5 +1319,20 b' def formatspec(expr, *args):' | |||
|
1319 | 1319 | |
|
1320 | 1320 | return ret |
|
1321 | 1321 | |
|
1322 | def prettyformat(tree): | |
|
1323 | def _prettyformat(tree, level, lines): | |
|
1324 | if not isinstance(tree, tuple) or tree[0] in ('string', 'symbol'): | |
|
1325 | lines.append((level, str(tree))) | |
|
1326 | else: | |
|
1327 | lines.append((level, '(%s' % tree[0])) | |
|
1328 | for s in tree[1:]: | |
|
1329 | _prettyformat(s, level + 1, lines) | |
|
1330 | lines[-1:] = [(lines[-1][0], lines[-1][1] + ')')] | |
|
1331 | ||
|
1332 | lines = [] | |
|
1333 | _prettyformat(tree, 0, lines) | |
|
1334 | output = '\n'.join((' '*l + s) for l, s in lines) | |
|
1335 | return output | |
|
1336 | ||
|
1322 | 1337 | # tell hggettext to extract docstrings from these functions: |
|
1323 | 1338 | i18nfunctions = symbols.values() |
@@ -13,11 +13,17 b'' | |||
|
13 | 13 | $ cd repo |
|
14 | 14 | |
|
15 | 15 | $ try 'p1()' |
|
16 | ('func', ('symbol', 'p1'), None) | |
|
16 | (func | |
|
17 | ('symbol', 'p1') | |
|
18 | None) | |
|
17 | 19 | $ try 'p2()' |
|
18 | ('func', ('symbol', 'p2'), None) | |
|
20 | (func | |
|
21 | ('symbol', 'p2') | |
|
22 | None) | |
|
19 | 23 | $ try 'parents()' |
|
20 | ('func', ('symbol', 'parents'), None) | |
|
24 | (func | |
|
25 | ('symbol', 'parents') | |
|
26 | None) | |
|
21 | 27 | |
|
22 | 28 | null revision |
|
23 | 29 | $ log 'p1()' |
@@ -94,19 +94,25 b' names that should work without quoting' | |||
|
94 | 94 | ('symbol', 'a') |
|
95 | 95 | 0 |
|
96 | 96 | $ try b-a |
|
97 | ('minus', ('symbol', 'b'), ('symbol', 'a')) | |
|
97 | (minus | |
|
98 | ('symbol', 'b') | |
|
99 | ('symbol', 'a')) | |
|
98 | 100 | 1 |
|
99 | 101 | $ try _a_b_c_ |
|
100 | 102 | ('symbol', '_a_b_c_') |
|
101 | 103 | 6 |
|
102 | 104 | $ try _a_b_c_-a |
|
103 | ('minus', ('symbol', '_a_b_c_'), ('symbol', 'a')) | |
|
105 | (minus | |
|
106 | ('symbol', '_a_b_c_') | |
|
107 | ('symbol', 'a')) | |
|
104 | 108 | 6 |
|
105 | 109 | $ try .a.b.c. |
|
106 | 110 | ('symbol', '.a.b.c.') |
|
107 | 111 | 7 |
|
108 | 112 | $ try .a.b.c.-a |
|
109 | ('minus', ('symbol', '.a.b.c.'), ('symbol', 'a')) | |
|
113 | (minus | |
|
114 | ('symbol', '.a.b.c.') | |
|
115 | ('symbol', 'a')) | |
|
110 | 116 | 7 |
|
111 | 117 | $ try -- '-a-b-c-' # complains |
|
112 | 118 | hg: parse error at 7: not a prefix: end |
@@ -114,7 +120,15 b' names that should work without quoting' | |||
|
114 | 120 | $ log -a-b-c- # succeeds with fallback |
|
115 | 121 | 4 |
|
116 | 122 | $ try -- -a-b-c--a # complains |
|
117 | ('minus', ('minus', ('minus', ('negate', ('symbol', 'a')), ('symbol', 'b')), ('symbol', 'c')), ('negate', ('symbol', 'a'))) | |
|
123 | (minus | |
|
124 | (minus | |
|
125 | (minus | |
|
126 | (negate | |
|
127 | ('symbol', 'a')) | |
|
128 | ('symbol', 'b')) | |
|
129 | ('symbol', 'c')) | |
|
130 | (negate | |
|
131 | ('symbol', 'a'))) | |
|
118 | 132 | abort: unknown revision '-a'! |
|
119 | 133 | [255] |
|
120 | 134 | $ try Γ© |
@@ -124,7 +138,9 b' names that should work without quoting' | |||
|
124 | 138 | quoting needed |
|
125 | 139 | |
|
126 | 140 | $ try '"-a-b-c-"-a' |
|
127 | ('minus', ('string', '-a-b-c-'), ('symbol', 'a')) | |
|
141 | (minus | |
|
142 | ('string', '-a-b-c-') | |
|
143 | ('symbol', 'a')) | |
|
128 | 144 | 4 |
|
129 | 145 | |
|
130 | 146 | $ log '1 or 2' |
@@ -136,15 +152,32 b' quoting needed' | |||
|
136 | 152 | $ log '1 and 2' |
|
137 | 153 | $ log '1&2' |
|
138 | 154 | $ try '1&2|3' # precedence - and is higher |
|
139 | ('or', ('and', ('symbol', '1'), ('symbol', '2')), ('symbol', '3')) | |
|
155 | (or | |
|
156 | (and | |
|
157 | ('symbol', '1') | |
|
158 | ('symbol', '2')) | |
|
159 | ('symbol', '3')) | |
|
140 | 160 | 3 |
|
141 | 161 | $ try '1|2&3' |
|
142 | ('or', ('symbol', '1'), ('and', ('symbol', '2'), ('symbol', '3'))) | |
|
162 | (or | |
|
163 | ('symbol', '1') | |
|
164 | (and | |
|
165 | ('symbol', '2') | |
|
166 | ('symbol', '3'))) | |
|
143 | 167 | 1 |
|
144 | 168 | $ try '1&2&3' # associativity |
|
145 | ('and', ('and', ('symbol', '1'), ('symbol', '2')), ('symbol', '3')) | |
|
169 | (and | |
|
170 | (and | |
|
171 | ('symbol', '1') | |
|
172 | ('symbol', '2')) | |
|
173 | ('symbol', '3')) | |
|
146 | 174 | $ try '1|(2|3)' |
|
147 | ('or', ('symbol', '1'), ('group', ('or', ('symbol', '2'), ('symbol', '3')))) | |
|
175 | (or | |
|
176 | ('symbol', '1') | |
|
177 | (group | |
|
178 | (or | |
|
179 | ('symbol', '2') | |
|
180 | ('symbol', '3')))) | |
|
148 | 181 | 1 |
|
149 | 182 | 2 |
|
150 | 183 | 3 |
@@ -226,13 +259,19 b' quoting needed' | |||
|
226 | 259 | $ log 'grep("issue\d+")' |
|
227 | 260 | 6 |
|
228 | 261 | $ try 'grep("(")' # invalid regular expression |
|
229 | ('func', ('symbol', 'grep'), ('string', '(')) | |
|
262 | (func | |
|
263 | ('symbol', 'grep') | |
|
264 | ('string', '(')) | |
|
230 | 265 | hg: parse error: invalid match pattern: unbalanced parenthesis |
|
231 | 266 | [255] |
|
232 | 267 | $ try 'grep("\bissue\d+")' |
|
233 | ('func', ('symbol', 'grep'), ('string', '\x08issue\\d+')) | |
|
268 | (func | |
|
269 | ('symbol', 'grep') | |
|
270 | ('string', '\x08issue\\d+')) | |
|
234 | 271 | $ try 'grep(r"\bissue\d+")' |
|
235 | ('func', ('symbol', 'grep'), ('string', '\\bissue\\d+')) | |
|
272 | (func | |
|
273 | ('symbol', 'grep') | |
|
274 | ('string', '\\bissue\\d+')) | |
|
236 | 275 | 6 |
|
237 | 276 | $ try 'grep(r"\")' |
|
238 | 277 | hg: parse error at 7: unterminated string |
@@ -437,14 +476,20 b' aliases:' | |||
|
437 | 476 | |
|
438 | 477 | $ try m |
|
439 | 478 | ('symbol', 'm') |
|
440 | ('func', ('symbol', 'merge'), None) | |
|
479 | (func | |
|
480 | ('symbol', 'merge') | |
|
481 | None) | |
|
441 | 482 | 6 |
|
442 | 483 | |
|
443 | 484 | test alias recursion |
|
444 | 485 | |
|
445 | 486 | $ try sincem |
|
446 | 487 | ('symbol', 'sincem') |
|
447 | ('func', ('symbol', 'descendants'), ('func', ('symbol', 'merge'), None)) | |
|
488 | (func | |
|
489 | ('symbol', 'descendants') | |
|
490 | (func | |
|
491 | ('symbol', 'merge') | |
|
492 | None)) | |
|
448 | 493 | 6 |
|
449 | 494 | 7 |
|
450 | 495 | |
@@ -463,8 +508,16 b' test nesting and variable passing' | |||
|
463 | 508 | $ echo 'nested2($1) = nested3($1)' >> .hg/hgrc |
|
464 | 509 | $ echo 'nested3($1) = max($1)' >> .hg/hgrc |
|
465 | 510 | $ try 'nested(2:5)' |
|
466 | ('func', ('symbol', 'nested'), ('range', ('symbol', '2'), ('symbol', '5'))) | |
|
467 | ('func', ('symbol', 'max'), ('range', ('symbol', '2'), ('symbol', '5'))) | |
|
511 | (func | |
|
512 | ('symbol', 'nested') | |
|
513 | (range | |
|
514 | ('symbol', '2') | |
|
515 | ('symbol', '5'))) | |
|
516 | (func | |
|
517 | ('symbol', 'max') | |
|
518 | (range | |
|
519 | ('symbol', '2') | |
|
520 | ('symbol', '5'))) | |
|
468 | 521 | 5 |
|
469 | 522 | |
|
470 | 523 | test variable isolation, variable placeholders are rewritten as string |
@@ -474,38 +527,100 b' far away.' | |||
|
474 | 527 | $ echo 'injectparamasstring = max("$1")' >> .hg/hgrc |
|
475 | 528 | $ echo 'callinjection($1) = descendants(injectparamasstring)' >> .hg/hgrc |
|
476 | 529 | $ try 'callinjection(2:5)' |
|
477 | ('func', ('symbol', 'callinjection'), ('range', ('symbol', '2'), ('symbol', '5'))) | |
|
478 | ('func', ('symbol', 'descendants'), ('func', ('symbol', 'max'), ('string', '$1'))) | |
|
530 | (func | |
|
531 | ('symbol', 'callinjection') | |
|
532 | (range | |
|
533 | ('symbol', '2') | |
|
534 | ('symbol', '5'))) | |
|
535 | (func | |
|
536 | ('symbol', 'descendants') | |
|
537 | (func | |
|
538 | ('symbol', 'max') | |
|
539 | ('string', '$1'))) | |
|
479 | 540 | abort: unknown revision '$1'! |
|
480 | 541 | [255] |
|
481 | 542 | |
|
482 | 543 | $ try 'd(2:5)' |
|
483 | ('func', ('symbol', 'd'), ('range', ('symbol', '2'), ('symbol', '5'))) | |
|
484 | ('func', ('symbol', 'reverse'), ('func', ('symbol', 'sort'), ('list', ('range', ('symbol', '2'), ('symbol', '5')), ('symbol', 'date')))) | |
|
544 | (func | |
|
545 | ('symbol', 'd') | |
|
546 | (range | |
|
547 | ('symbol', '2') | |
|
548 | ('symbol', '5'))) | |
|
549 | (func | |
|
550 | ('symbol', 'reverse') | |
|
551 | (func | |
|
552 | ('symbol', 'sort') | |
|
553 | (list | |
|
554 | (range | |
|
555 | ('symbol', '2') | |
|
556 | ('symbol', '5')) | |
|
557 | ('symbol', 'date')))) | |
|
485 | 558 | 4 |
|
486 | 559 | 5 |
|
487 | 560 | 3 |
|
488 | 561 | 2 |
|
489 | 562 | $ try 'rs(2 or 3, date)' |
|
490 | ('func', ('symbol', 'rs'), ('list', ('or', ('symbol', '2'), ('symbol', '3')), ('symbol', 'date'))) | |
|
491 | ('func', ('symbol', 'reverse'), ('func', ('symbol', 'sort'), ('list', ('or', ('symbol', '2'), ('symbol', '3')), ('symbol', 'date')))) | |
|
563 | (func | |
|
564 | ('symbol', 'rs') | |
|
565 | (list | |
|
566 | (or | |
|
567 | ('symbol', '2') | |
|
568 | ('symbol', '3')) | |
|
569 | ('symbol', 'date'))) | |
|
570 | (func | |
|
571 | ('symbol', 'reverse') | |
|
572 | (func | |
|
573 | ('symbol', 'sort') | |
|
574 | (list | |
|
575 | (or | |
|
576 | ('symbol', '2') | |
|
577 | ('symbol', '3')) | |
|
578 | ('symbol', 'date')))) | |
|
492 | 579 | 3 |
|
493 | 580 | 2 |
|
494 | 581 | $ try 'rs()' |
|
495 | ('func', ('symbol', 'rs'), None) | |
|
582 | (func | |
|
583 | ('symbol', 'rs') | |
|
584 | None) | |
|
496 | 585 | hg: parse error: invalid number of arguments: 0 |
|
497 | 586 | [255] |
|
498 | 587 | $ try 'rs(2)' |
|
499 | ('func', ('symbol', 'rs'), ('symbol', '2')) | |
|
588 | (func | |
|
589 | ('symbol', 'rs') | |
|
590 | ('symbol', '2')) | |
|
500 | 591 | hg: parse error: invalid number of arguments: 1 |
|
501 | 592 | [255] |
|
502 | 593 | $ try 'rs(2, data, 7)' |
|
503 | ('func', ('symbol', 'rs'), ('list', ('list', ('symbol', '2'), ('symbol', 'data')), ('symbol', '7'))) | |
|
594 | (func | |
|
595 | ('symbol', 'rs') | |
|
596 | (list | |
|
597 | (list | |
|
598 | ('symbol', '2') | |
|
599 | ('symbol', 'data')) | |
|
600 | ('symbol', '7'))) | |
|
504 | 601 | hg: parse error: invalid number of arguments: 3 |
|
505 | 602 | [255] |
|
506 | 603 | $ try 'rs4(2 or 3, x, x, date)' |
|
507 | ('func', ('symbol', 'rs4'), ('list', ('list', ('list', ('or', ('symbol', '2'), ('symbol', '3')), ('symbol', 'x')), ('symbol', 'x')), ('symbol', 'date'))) | |
|
508 | ('func', ('symbol', 'reverse'), ('func', ('symbol', 'sort'), ('list', ('or', ('symbol', '2'), ('symbol', '3')), ('symbol', 'date')))) | |
|
604 | (func | |
|
605 | ('symbol', 'rs4') | |
|
606 | (list | |
|
607 | (list | |
|
608 | (list | |
|
609 | (or | |
|
610 | ('symbol', '2') | |
|
611 | ('symbol', '3')) | |
|
612 | ('symbol', 'x')) | |
|
613 | ('symbol', 'x')) | |
|
614 | ('symbol', 'date'))) | |
|
615 | (func | |
|
616 | ('symbol', 'reverse') | |
|
617 | (func | |
|
618 | ('symbol', 'sort') | |
|
619 | (list | |
|
620 | (or | |
|
621 | ('symbol', '2') | |
|
622 | ('symbol', '3')) | |
|
623 | ('symbol', 'date')))) | |
|
509 | 624 | 3 |
|
510 | 625 | 2 |
|
511 | 626 |
General Comments 0
You need to be logged in to leave comments.
Login now