Show More
@@ -523,21 +523,52 b' class cmdalias(object):' | |||||
523 | ui.debug("alias '%s' expands to '%s'\n" % (self.name, args)) |
|
523 | ui.debug("alias '%s' expands to '%s'\n" % (self.name, args)) | |
524 | raise |
|
524 | raise | |
525 |
|
525 | |||
|
526 | class lazyaliasentry(object): | |||
|
527 | """like a typical command entry (func, opts, help), but is lazy""" | |||
|
528 | ||||
|
529 | def __init__(self, name, definition, cmdtable, source): | |||
|
530 | self.name = name | |||
|
531 | self.definition = definition | |||
|
532 | self.cmdtable = cmdtable.copy() | |||
|
533 | self.source = source | |||
|
534 | ||||
|
535 | @util.propertycache | |||
|
536 | def _aliasdef(self): | |||
|
537 | return cmdalias(self.name, self.definition, self.cmdtable, self.source) | |||
|
538 | ||||
|
539 | def __getitem__(self, n): | |||
|
540 | aliasdef = self._aliasdef | |||
|
541 | if n == 0: | |||
|
542 | return aliasdef | |||
|
543 | elif n == 1: | |||
|
544 | return aliasdef.opts | |||
|
545 | elif n == 2: | |||
|
546 | return aliasdef.help | |||
|
547 | else: | |||
|
548 | raise IndexError | |||
|
549 | ||||
|
550 | def __iter__(self): | |||
|
551 | for i in range(3): | |||
|
552 | yield self[i] | |||
|
553 | ||||
|
554 | def __len__(self): | |||
|
555 | return 3 | |||
|
556 | ||||
526 | def addaliases(ui, cmdtable): |
|
557 | def addaliases(ui, cmdtable): | |
527 | # aliases are processed after extensions have been loaded, so they |
|
558 | # aliases are processed after extensions have been loaded, so they | |
528 | # may use extension commands. Aliases can also use other alias definitions, |
|
559 | # may use extension commands. Aliases can also use other alias definitions, | |
529 | # but only if they have been defined prior to the current definition. |
|
560 | # but only if they have been defined prior to the current definition. | |
530 | for alias, definition in ui.configitems('alias'): |
|
561 | for alias, definition in ui.configitems('alias'): | |
531 | try: |
|
562 | try: | |
532 |
if cmdtable[alias |
|
563 | if cmdtable[alias].definition == definition: | |
533 | continue |
|
564 | continue | |
534 | except (KeyError, AttributeError): |
|
565 | except (KeyError, AttributeError): | |
535 | # definition might not exist or it might not be a cmdalias |
|
566 | # definition might not exist or it might not be a cmdalias | |
536 | pass |
|
567 | pass | |
537 |
|
568 | |||
538 | source = ui.configsource('alias', alias) |
|
569 | source = ui.configsource('alias', alias) | |
539 |
|
|
570 | entry = lazyaliasentry(alias, definition, cmdtable, source) | |
540 | cmdtable[aliasdef.name] = (aliasdef, aliasdef.opts, aliasdef.help) |
|
571 | cmdtable[alias] = entry | |
541 |
|
572 | |||
542 | def _parse(ui, args): |
|
573 | def _parse(ui, args): | |
543 | options = {} |
|
574 | options = {} |
General Comments 0
You need to be logged in to leave comments.
Login now