changeset 45022:d2227d4c9e6b

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), but only postponed it. Initializing LC_CTYPE seems to be sufficient for curses to work correctly. Luckily this is already done at interpreter startup on modern Python versions and, since recently, by Mercurial in the pycompat module in all other cases.
author Manuel Jacob <me@manueljacob.de>
date Fri, 26 Jun 2020 09:37:34 +0200
parents a25343d16ebe
children 05277278f177
files hgext/histedit.py mercurial/crecord.py
diffstat 2 files changed, 0 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/histedit.py	Fri Jun 26 04:07:50 2020 +0200
+++ b/hgext/histedit.py	Fri Jun 26 09:37:34 2020 +0200
@@ -201,7 +201,6 @@
     termios = None
 
 import functools
-import locale
 import os
 import struct
 
@@ -1711,10 +1710,6 @@
         ctxs = []
         for i, r in enumerate(revs):
             ctxs.append(histeditrule(ui, repo[r], i))
-        # Curses requires setting the locale or it will default to the C
-        # locale. This sets the locale to the user's default system
-        # locale.
-        locale.setlocale(locale.LC_ALL, '')
         rc = curses.wrapper(functools.partial(_chisteditmain, repo, ctxs))
         curses.echo()
         curses.endwin()
--- a/mercurial/crecord.py	Fri Jun 26 04:07:50 2020 +0200
+++ b/mercurial/crecord.py	Fri Jun 26 09:37:34 2020 +0200
@@ -10,7 +10,6 @@
 
 from __future__ import absolute_import
 
-import locale
 import os
 import re
 import signal
@@ -574,9 +573,6 @@
     """
     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)