When detecting the EDITOR from the environment, if the EDITOR env var is not present, try to read it from the shell's rc files by executing a login shell and dumping its environment
macOS makes it unreasonably hard to set system-wide environment variables, so this hack might be useful there.
This commit is contained in:
parent
51453a54e4
commit
50e7351c73
@ -203,9 +203,31 @@ def macos_cmdline(argv_args):
|
|||||||
return ans
|
return ans
|
||||||
|
|
||||||
|
|
||||||
|
def read_shell_environment(opts):
|
||||||
|
if not hasattr(read_shell_environment, 'ans'):
|
||||||
|
import subprocess
|
||||||
|
from .session import resolved_shell
|
||||||
|
shell = resolved_shell(opts)
|
||||||
|
p = subprocess.Popen(shell + ['-l', '-c', 'env'], stdout=subprocess.PIPE)
|
||||||
|
raw = p.stdout.read()
|
||||||
|
if p.wait() == 0:
|
||||||
|
raw = raw.decode('utf-8', 'replace')
|
||||||
|
ans = read_shell_environment.ans = {}
|
||||||
|
for line in raw.splitlines():
|
||||||
|
k, v = line.partition('=')[::2]
|
||||||
|
if k and v:
|
||||||
|
ans[k] = v
|
||||||
|
return read_shell_environment.ans
|
||||||
|
|
||||||
|
|
||||||
def setup_environment(opts, args):
|
def setup_environment(opts, args):
|
||||||
extra_env = opts.env.copy()
|
extra_env = opts.env.copy()
|
||||||
if opts.editor != '.':
|
if opts.editor == '.':
|
||||||
|
if 'EDITOR' not in os.environ:
|
||||||
|
shell_env = read_shell_environment(opts)
|
||||||
|
if 'EDITOR' in shell_env:
|
||||||
|
os.environ['EDITOR'] = shell_env['EDITOR']
|
||||||
|
else:
|
||||||
os.environ['EDITOR'] = opts.editor
|
os.environ['EDITOR'] = opts.editor
|
||||||
if args.listen_on:
|
if args.listen_on:
|
||||||
os.environ['KITTY_LISTEN_ON'] = args.listen_on
|
os.environ['KITTY_LISTEN_ON'] = args.listen_on
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user