changeset 45017:a65c60f3280e

curses: back out d2227d4c9e6b (do not initialize LC_ALL to user settings) The changeset was based on a25343d16ebe, which will be backed out, too. Another fix for the problem will be resubmitted to the stable branch.
author Manuel Jacob <me@manueljacob.de>
date Sun, 28 Jun 2020 17:49:14 +0200
parents 752da6863e39
children f2dc337117b9
files hgext/histedit.py mercurial/crecord.py
diffstat 2 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/histedit.py	Thu Jun 25 11:22:34 2020 +0200
+++ b/hgext/histedit.py	Sun Jun 28 17:49:14 2020 +0200
@@ -201,6 +201,7 @@
     termios = None
 
 import functools
+import locale
 import os
 import struct
 
@@ -1710,6 +1711,10 @@
         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	Thu Jun 25 11:22:34 2020 +0200
+++ b/mercurial/crecord.py	Sun Jun 28 17:49:14 2020 +0200
@@ -10,6 +10,7 @@
 
 from __future__ import absolute_import
 
+import locale
 import os
 import re
 import signal
@@ -565,6 +566,9 @@
     """
     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)