terminal: Set TERM_PROGRAM and TERM_PROGRAM_VERSION environment variables in integrated terminal (#14213)

![image](https://github.com/zed-industries/zed/assets/31354274/9d1c5410-897b-40a1-8256-2d7e207f69ff)

These two environment variables are essential when people need to detect
terminal type and do something. Many popular terminals set them.

fixes https://github.com/zed-industries/zed/issues/4571

Release Notes:

- Set `TERM_PROGRAM` and `TERM_PROGRAM_VERSION` environment variables in
the integrated terminal
([#4571](https://github.com/zed-industries/zed/issues/4571)).
This commit is contained in:
Donough Liu 2024-07-12 01:48:46 +08:00 committed by GitHub
parent c195c4ddff
commit d49727ff10
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 10 additions and 1 deletions

1
Cargo.lock generated
View File

@ -10737,6 +10737,7 @@ dependencies = [
"gpui",
"libc",
"rand 0.8.5",
"release_channel",
"schemars",
"serde",
"serde_derive",

View File

@ -180,6 +180,7 @@ impl Project {
settings.max_scroll_history_lines,
window,
completion_tx,
cx,
)
.map(|builder| {
let terminal_handle = cx.new_model(|cx| builder.subscribe(cx));

View File

@ -21,7 +21,7 @@ dirs.workspace = true
futures.workspace = true
gpui.workspace = true
libc.workspace = true
task.workspace = true
release_channel.workspace = true
schemars.workspace = true
serde.workspace = true
serde_derive.workspace = true
@ -29,6 +29,7 @@ serde_json.workspace = true
settings.workspace = true
sysinfo.workspace = true
smol.workspace = true
task.workspace = true
theme.workspace = true
thiserror.workspace = true
util.workspace = true

View File

@ -319,12 +319,18 @@ impl TerminalBuilder {
max_scroll_history_lines: Option<usize>,
window: AnyWindowHandle,
completion_tx: Sender<()>,
cx: &mut AppContext,
) -> Result<TerminalBuilder> {
// TODO: Properly set the current locale,
env.entry("LC_ALL".to_string())
.or_insert_with(|| "en_US.UTF-8".to_string());
env.insert("ZED_TERM".to_string(), "true".to_string());
env.insert("TERM_PROGRAM".to_string(), "zed".to_string());
env.insert(
"TERM_PROGRAM_VERSION".to_string(),
release_channel::AppVersion::global(cx).to_string(),
);
let pty_options = {
let alac_shell = match shell.clone() {