Wed, 18 Aug 2010 18:56:44 -0400 aliases: provide more flexible ways to work with shell alias arguments
Steve Losh <steve@stevelosh.com> [Wed, 18 Aug 2010 18:56:44 -0400] rev 11989
aliases: provide more flexible ways to work with shell alias arguments This patch changes the functionality of shell aliases to add more powerful options for working with shell alias arguments. First: the alias name + arguments to a shell alias are set as an HG_ARGS environment variable, delimited by spaces. This matches the behavior of hooks. Second: any occurrences of "$@" (without quotes) are replaced with the arguments, separated by spaces. This happens *before* the alias gets to the shell. Third: any positive numeric variables ("$1", "$2", etc) are replaced with the appropriate argument, indexed from 1. "$0" is replaced with the name of the alias. Any "extra" numeric variables are replaced with an empty string. This happens *before* the alias gets to the shell. These changes allow for more flexible shell aliases: [alias] echo = !echo $@ count = !hg log -r "$@" --template='.' | wc -c | sed -e 's/ //g' qqueuemv = !mv "`hg root`/.hg/patches-$1" "`hg root`/.hg/patches-$2" In action: $ hg echo foo foo $ hg count 'branch(default)' 901 $ hg count 'branch(stable) and keyword(fixes)' 102 $ hg qqueuemv myfeature somefeature
Wed, 18 Aug 2010 18:18:26 -0400 util: add an interpolate() function to for replacing multiple values
Steve Losh <steve@stevelosh.com> [Wed, 18 Aug 2010 18:18:26 -0400] rev 11988
util: add an interpolate() function to for replacing multiple values util.interpolate can be used to replace multiple items in a string all at once (and optionally apply a function to the replacement), without worrying about recursing: >>> import util >>> s = '$foo, $spam' >>> util.interpolate(r'\$', { 'foo': 'bar', 'spam': 'eggs' }, s) 'bar, eggs' >>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s) 'spam, foo' >>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s, lambda s: s.upper()) 'SPAM, FOO' The patch also changes filemerge.py to use this new function.
Wed, 18 Aug 2010 10:53:52 -0400 convert: use encoding.encoding instead of locale.getpreferredencoding() stable
Brodie Rao <brodie@bitheap.org> [Wed, 18 Aug 2010 10:53:52 -0400] rev 11987
convert: use encoding.encoding instead of locale.getpreferredencoding() The latter may not return useful results in certain OS X environments.
(0) -10000 -3000 -1000 -300 -100 -30 -10 -3 +3 +10 +30 +100 +300 +1000 +3000 +10000 +30000 tip