# HG changeset patch # User Jun Wu # Date 1462575476 -3600 # 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 -r ad1bdea43965 -r 983353035cec hgext/chgserver.py --- a/hgext/chgserver.py Sat May 07 00:16:58 2016 +0100 +++ b/hgext/chgserver.py Fri May 06 23:57:56 2016 +0100 @@ -213,18 +213,6 @@ 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 @@ _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 -r ad1bdea43965 -r 983353035cec tests/test-chg.t --- a/tests/test-chg.t Sat May 07 00:16:58 2016 +0100 +++ b/tests/test-chg.t Fri May 06 23:57:56 2016 +0100 @@ -10,3 +10,23 @@ $ 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