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-11 20:48:46 +03:00
committed by GitHub
parent c195c4ddff
commit d49727ff10
4 changed files with 10 additions and 1 deletions
Generated
+1
View File
@@ -10737,6 +10737,7 @@ dependencies = [
"gpui",
"libc",
"rand 0.8.5",
"release_channel",
"schemars",
"serde",
"serde_derive",
+1
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));
+2 -1
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
+6
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() {