encoding: improve handling of buggy getpreferredencoding() on Mac OS X
Prior to version 2.7, calling locale.getpreferredencoding() would
always return 'mac-roman' on Mac OS X. Previously, this was handled by
a call to locale.setlocale(). Unfortunately, Python 2.6.5 and older
have a bug where isspace() would incorrectly report True for 0x85 and
0xa0 after such a call.
In order to fix this, we replace the previous _encodingfixup mapping
to an _encodingfixers mapping. Rather than mapping encodings to their
replacement, it maps them to a function returning the
replacement. This allows us to provide an simplified implementation of
getpreferredencoding() which extracts the expected encoding and
restores the locale.
This fix is based on a patch originally submitted by Martijn Pieters
as well as feedback from Brodie Rao.
uisetup called
reposetup called for a
ui == repo.ui
Foo
uisetup called
reposetup called for a
ui == repo.ui
reposetup called for b
ui == repo.ui
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
uisetup called
Bar
% module/__init__.py-style
uisetup called
reposetup called for a
ui == repo.ui
Foo
1) foo imported
1) bar imported
2) foo uisetup
2) bar uisetup
3) foo extsetup
3) bar extsetup
4) foo reposetup
4) bar reposetup
% hgweb.cgi
1) foo imported
1) bar imported
2) foo uisetup
2) bar uisetup
3) foo extsetup
3) bar extsetup
4) foo reposetup
4) bar reposetup
4) foo reposetup
4) bar reposetup
empty extension - empty cmdtable
no commands defined
% hg help
debugextension extension - only debugcommands
no commands defined
% hg help --verbose
debugextension extension - only debugcommands
list of commands:
foo:
yet another foo command
global options:
-R --repository REPO repository root directory or name of overlay bundle
file
--cwd DIR change working directory
-y --noninteractive do not prompt, assume 'yes' for any required answers
-q --quiet suppress output
-v --verbose enable additional output
--config CONFIG [+] set/override config option (use 'section.name=value')
--debug enable debugging output
--debugger start debugger
--encoding ENCODE set the charset encoding (default: ascii)
--encodingmode MODE set the charset encoding mode (default: strict)
--traceback always print a traceback on exception
--time time how long the command takes
--profile print command execution profile
--version output version information and exit
-h --help display help and exit
[+] marked option can be specified multiple times
% hg help --debug
debugextension extension - only debugcommands
list of commands:
debugfoobar:
yet another debug command
foo:
yet another foo command
global options:
-R --repository REPO repository root directory or name of overlay bundle
file
--cwd DIR change working directory
-y --noninteractive do not prompt, assume 'yes' for any required answers
-q --quiet suppress output
-v --verbose enable additional output
--config CONFIG [+] set/override config option (use 'section.name=value')
--debug enable debugging output
--debugger start debugger
--encoding ENCODE set the charset encoding (default: ascii)
--encodingmode MODE set the charset encoding mode (default: strict)
--traceback always print a traceback on exception
--time time how long the command takes
--profile print command execution profile
--version output version information and exit
-h --help display help and exit
[+] marked option can be specified multiple times
% issue811
% show extensions
debugissue811
mq
% disabled extension commands
'email' is provided by the following extension:
patchbomb command to send changesets as (a series of) patch emails
use "hg help extensions" for information on enabling extensions
hg: unknown command 'qdel'
'qdelete' is provided by the following extension:
mq manage a stack of patches
use "hg help extensions" for information on enabling extensions
hg: unknown command 'churn'
'churn' is provided by the following extension:
churn command to display statistics about repository history
use "hg help extensions" for information on enabling extensions
% disabled extensions
churn extension - command to display statistics about repository history
use "hg help extensions" for information on enabling extensions
patchbomb extension - command to send changesets as (a series of) patch emails
use "hg help extensions" for information on enabling extensions
% broken disabled extension and command
broken extension - (no help text available)
use "hg help extensions" for information on enabling extensions
hg: unknown command 'foo'