# HG changeset patch # User Jun Wu # Date 2016-05-06 22:57:56 # Node ID 983353035cec51382257b7cbd599c7fa4da97847 # Parent ad1bdea43965ec3d14d6a343bbec4e289208949c chgserver: remove _clearenvaliases Since we expand environment variables in alias lazily, the _clearenvaliases hack is no longer necessary. This resolves an issue that a non-shell alias which has environment variables in its arguments and is set to use pager will not use pager running with chg. diff --git a/hgext/chgserver.py b/hgext/chgserver.py --- a/hgext/chgserver.py +++ b/hgext/chgserver.py @@ -213,18 +213,6 @@ def _setuppagercmd(ui, options, cmd): ui.setconfig('ui', 'interactive', False, 'pager') return p -_envvarre = re.compile(r'\$[a-zA-Z_]+') - -def _clearenvaliases(cmdtable): - """Remove stale command aliases referencing env vars; variable expansion - is done at dispatch.addaliases()""" - for name, tab in cmdtable.items(): - cmddef = tab[0] - if (isinstance(cmddef, dispatch.cmdalias) and - not cmddef.definition.startswith('!') and # shell alias - _envvarre.search(cmddef.definition)): - del cmdtable[name] - def _newchgui(srcui, csystem): class chgui(srcui.__class__): def __init__(self, src=None): @@ -525,7 +513,6 @@ class chgcmdserver(commandserver.server) _log('setenv: %r\n' % sorted(newenv.keys())) os.environ.clear() os.environ.update(newenv) - _clearenvaliases(commands.table) capabilities = commandserver.server.capabilities.copy() capabilities.update({'attachio': attachio, diff --git a/tests/test-chg.t b/tests/test-chg.t --- a/tests/test-chg.t +++ b/tests/test-chg.t @@ -10,3 +10,23 @@ ill-formed config $ hg status hg: parse error at * (glob) [255] + +alias having an environment variable and set to use pager + + $ rm $HGRCPATH + $ cat >> $HGRCPATH <<'EOF' + > [ui] + > formatted = yes + > [extensions] + > pager = + > [pager] + > pager = sed -e 's/^/P/' + > attend = printa + > [alias] + > printa = log -T "$A\n" -r 0 + > EOF + + $ A=1 hg printa + P1 + $ A=2 hg printa + P2