Fix env LC_CTYPE=UTF-8 not working on macOS

This commit is contained in:
Kovid Goyal 2020-11-30 16:23:29 +05:30
parent 2dbeb151f3
commit 4c4f6983d1
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 6 additions and 3 deletions

View File

@ -156,9 +156,12 @@ def default_env() -> Dict[str, str]:
def set_default_env(val: Optional[Dict[str, str]] = None) -> None: def set_default_env(val: Optional[Dict[str, str]] = None) -> None:
env = process_env().copy() env = process_env().copy()
has_lctype = False
if val: if val:
has_lctype = 'LC_CTYPE' in val
env.update(val) env.update(val)
setattr(default_env, 'env', env) setattr(default_env, 'env', env)
setattr(default_env, 'lc_ctype_set_by_user', has_lctype)
def openpty() -> Tuple[int, int]: def openpty() -> Tuple[int, int]:
@ -210,7 +213,8 @@ class Child:
env: Optional[Dict[str, str]] = getattr(self, '_final_env', None) env: Optional[Dict[str, str]] = getattr(self, '_final_env', None)
if env is None: if env is None:
env = self._final_env = default_env().copy() env = self._final_env = default_env().copy()
if is_macos and env.get('LC_CTYPE') == 'UTF-8' and not sys._xoptions.get('lc_ctype_before_python'): if is_macos and env.get('LC_CTYPE') == 'UTF-8' and not sys._xoptions.get(
'lc_ctype_before_python') and not getattr(default_env, 'lc_ctype_set_by_user', False):
del env['LC_CTYPE'] del env['LC_CTYPE']
env.update(self.env) env.update(self.env)
env['TERM'] = self.opts.term env['TERM'] = self.opts.term

View File

@ -249,7 +249,6 @@ def expand_listen_on(listen_on: str, from_config_file: bool) -> str:
def setup_environment(opts: OptionsStub, cli_opts: CLIOptions) -> None: def setup_environment(opts: OptionsStub, cli_opts: CLIOptions) -> None:
extra_env = opts.env.copy()
if opts.editor == '.': if opts.editor == '.':
editor = get_editor_from_env(os.environ) editor = get_editor_from_env(os.environ)
if not editor: if not editor:
@ -266,7 +265,7 @@ def setup_environment(opts: OptionsStub, cli_opts: CLIOptions) -> None:
if cli_opts.listen_on and opts.allow_remote_control != 'n': if cli_opts.listen_on and opts.allow_remote_control != 'n':
cli_opts.listen_on = expand_listen_on(cli_opts.listen_on, from_config_file) cli_opts.listen_on = expand_listen_on(cli_opts.listen_on, from_config_file)
os.environ['KITTY_LISTEN_ON'] = cli_opts.listen_on os.environ['KITTY_LISTEN_ON'] = cli_opts.listen_on
set_default_env(extra_env) set_default_env(opts.env.copy())
def set_locale() -> None: def set_locale() -> None: