##// END OF EJS Templates
convert: marked string for translation
convert: marked string for translation

File last commit:

r7643:9a1ea658 default
r7735:2e48668b default
Show More
alias.py
76 lines | 2.2 KiB | text/x-python | PythonLexer
Brendan Cully
Add alias extension
r4801 # Copyright (C) 2007 Brendan Cully <brendan@kublai.com>
# This file is published under the GNU GPL.
'''allow user-defined command aliases
To use, create entries in your hgrc of the form
[alias]
mycmd = cmd --args
'''
Martin Geisler
i18n: mark strings for translation in alias extension
r6954 from mercurial.i18n import _
Matt Mackall
error: move UnknownCommand and AmbiguousCommand
r7643 from mercurial import commands, cmdutil, error
Brendan Cully
Add alias extension
r4801
cmdtable = {}
class RecursiveCommand(Exception): pass
class lazycommand(object):
'''defer command lookup until needed, so that extensions loaded
after alias can be aliased'''
def __init__(self, ui, name, target):
self._ui = ui
self._name = name
self._target = target
self._cmd = None
def __len__(self):
self._resolve()
return len(self._cmd)
def __getitem__(self, key):
self._resolve()
return self._cmd[key]
def __iter__(self):
self._resolve()
return self._cmd.__iter__()
def _resolve(self):
if self._cmd is not None:
return
try:
Matt Mackall
error: move UnknownCommand and AmbiguousCommand
r7643 self._cmd = cmdutil.findcmd(self._target, commands.table, False)[1]
Brendan Cully
Add alias extension
r4801 if self._cmd == self:
raise RecursiveCommand()
if self._target in commands.norepo.split(' '):
commands.norepo += ' %s' % self._name
return
Matt Mackall
error: move UnknownCommand and AmbiguousCommand
r7643 except error.UnknownCommand:
Martin Geisler
i18n: mark strings for translation in alias extension
r6954 msg = _('*** [alias] %s: command %s is unknown') % \
Brendan Cully
Add alias extension
r4801 (self._name, self._target)
Matt Mackall
error: move UnknownCommand and AmbiguousCommand
r7643 except error.AmbiguousCommand:
Martin Geisler
i18n: mark strings for translation in alias extension
r6954 msg = _('*** [alias] %s: command %s is ambiguous') % \
Brendan Cully
Add alias extension
r4801 (self._name, self._target)
except RecursiveCommand:
Martin Geisler
i18n: mark strings for translation in alias extension
r6954 msg = _('*** [alias] %s: circular dependency on %s') % \
Brendan Cully
Add alias extension
r4801 (self._name, self._target)
def nocmd(*args, **opts):
self._ui.warn(msg + '\n')
return 1
nocmd.__doc__ = msg
self._cmd = (nocmd, [], '')
commands.norepo += ' %s' % self._name
def uisetup(ui):
for cmd, target in ui.configitems('alias'):
if not target:
Martin Geisler
i18n: mark strings for translation in alias extension
r6954 ui.warn(_('*** [alias] %s: no definition\n') % cmd)
Brendan Cully
Add alias extension
r4801 continue
args = target.split(' ')
tcmd = args.pop(0)
if args:
Thomas Arendsen Hein
test-alias: Removed fallback to parentui, no longer needed since 10afa3fab6b4
r4964 ui.setconfig('defaults', cmd, ' '.join(args))
Brendan Cully
Add alias extension
r4801 cmdtable[cmd] = lazycommand(ui, cmd, tcmd)