Mercurial > public > mercurial-scm > hg-stable
diff mercurial/crecord.py @ 44826:1bab6b61b62b stable
curses: do not initialize LC_ALL to user settings (issue6358)
701341f57ceb moved the setlocale() call to right before curses was used. This
didn?t fully solve the problem it was supposed to solve (locale-dependent
functions, like date formatting/parsing and str methods on Python 2), but only
postponed it.
Initializing LC_CTYPE seems to be sufficient for curses to work correctly.
Therefore LC_CTYPE is set while curses is used and reset afterwards. Some
locale-dependent str methods might behave differently on Python 2 while curses
is used, but that shouldn?d be a problem.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Sun, 28 Jun 2020 18:02:45 +0200 |
parents | d3f776c4760e |
children | 4a503c1b664a |
line wrap: on
line diff
--- a/mercurial/crecord.py Thu Jun 25 03:46:07 2020 +0200 +++ b/mercurial/crecord.py Sun Jun 28 18:02:45 2020 +0200 @@ -10,7 +10,6 @@ from __future__ import absolute_import -import locale import os import re import signal @@ -574,14 +573,12 @@ """ ui.write(_(b'starting interactive selection\n')) chunkselector = curseschunkselector(headerlist, ui, operation) - # This is required for ncurses to display non-ASCII characters in - # default user locale encoding correctly. --immerrr - locale.setlocale(locale.LC_ALL, '') origsigtstp = sentinel = object() if util.safehasattr(signal, b'SIGTSTP'): origsigtstp = signal.getsignal(signal.SIGTSTP) try: - curses.wrapper(chunkselector.main) + with util.with_lc_ctype(): + curses.wrapper(chunkselector.main) if chunkselector.initexc is not None: raise chunkselector.initexc # ncurses does not restore signal handler for SIGTSTP