ZIm/crates
tims 632372a4f1
linux: Fix issue with project-specific env not being found via .envrc (direnv) (#22803)
Closes #18908

This PR started as a cleanup of redundant logic for setting up envs when
Zed is launched as a desktop entry on Linux. More on this can be read
[here](https://github.com/zed-industries/zed/pull/22335#issuecomment-2574726377).
The TLDR is that desktop entries on Linux sometimes might not have the
correct envs (as they don't `cwd` into your project directory). To
address this, we initially tried to fix it by loading the default shell
and its env vars.

However, a better solution, as recommended by @mrnugget, is to pass
`env` as `None`. Internally, if `env` is `None`, it falls back to the
project's working dir envs. This removes the need to manually load the
envs and is cleaner.

Additionally, it also fixes an issue with Zed not loading
project-specific envs because now we are actually doing so (albeit
unintentionally?).

I don't have macOS to test, but I believe this is not an issue on macOS
since it uses the Zed binary instead of the CLI, which essentially sets
the CLI `env` to `None` automatically.

Before:

Here, I have `/home/tims/go/bin` set up in `.envrc`, which only loads in
that project directory.

When launching Zed via the CLI in the project directory, notice
`/home/tims/go/bin` is in the `PATH`. As a result, we use the
user-installed `gopls` server.

```sh
[INFO] attempting to start language server "gopls", path: "/home/tims/temp/go-proj", id: 1
[INFO] using project environment variables from CLI. PATH="/home/tims/go/bin:/usr/local/go/bin"
[INFO] found user-installed language server for gopls. path: "/home/tims/go/bin/gopls", arguments: ["-mode=stdio"]
[INFO] starting language server process. binary path: "/home/tims/go/bin/gopls", working directory: "/home/tims/temp/go-proj", args: ["-mode=stdio"]
```

However, when using the desktop entry and attempting to load envs from
the default shell, notice `/home/tims/go/bin` is no longer there since
it's not in the project directory. Zed cannot find the user-installed
language server and starts downloading its own `gopls`.

```sh
[INFO] attempting to start language server "gopls", path: "/home/tims/temp/go-proj", id: 1
[INFO] using project environment variables from CLI. PATH="/usr/local/go/bin"
[INFO] fetching latest version of language server "gopls"
[INFO] downloading language server "gopls"
[INFO] starting language server process. binary path: "/home/tims/.local/share/zed/languages/gopls/gopls_0.17.1_go_1.23.4", working directory: "/home/tims/temp/go-proj", args: ["-mode=stdio"]
```

After: 

When using the desktop entry, we pass the CLI env as `None`. For the
language server, it falls back to the project directory envs. Result,
Zed finds the user-installed language server.

```sh
[INFO] attempting to start language server "gopls", path: "/home/tims/temp/go-proj", id: 1
[INFO] using project environment variables shell launched in "/home/tims/temp/go-proj". PATH="/home/tims/go/bin:/usr/local/go/bin"
[INFO] found user-installed language server for gopls. path: "/home/tims/go/bin/gopls", arguments: ["-mode=stdio"]
[INFO] starting language server process. binary path: "/home/tims/go/bin/gopls", working directory: "/home/tims/temp/go-proj", args: ["-mode=stdio"]
```

Release Notes:

- Fixed issue with project-specific env not being found via .envrc
(direnv) on Linux
2025-01-08 16:38:19 +00:00
..
activity_indicator Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
anthropic anthropic: Allow specifying additional beta headers for custom models (#20551) 2025-01-03 23:46:32 +00:00
assets add ui::Vector and separate images from icons (#17815) 2024-09-13 17:44:16 -04:00
assistant Adjust TintColor color token terminology (#22826) 2025-01-08 14:40:48 +00:00
assistant2 assistant2: Handle non-text files in context pickers (#22795) 2025-01-08 14:06:29 +00:00
assistant_slash_command Overhaul extension registration (#21083) 2024-11-22 19:02:32 -05:00
assistant_tool Factor tool definitions out of assistant (#21189) 2024-11-25 18:26:34 -05:00
assistant_tools assistant2: Add support for using tools (#21190) 2024-11-25 19:44:34 -05:00
audio Update Rust crate rodio to 0.20.0 (#20955) 2024-11-28 10:58:36 +02:00
auto_update Extract auto_update_ui crate (#21008) 2024-11-21 14:11:57 -05:00
auto_update_ui Dequalify WindowContext and ViewContext references (#22477) 2024-12-28 23:09:55 +00:00
breadcrumbs chore: Remove outline dependency from breadcrumbs (#22504) 2024-12-30 12:08:26 +00:00
call More telemetry events (#22171) 2024-12-17 22:16:59 -07:00
channel Use Instant not chrono for telemetry (#20756) 2024-11-19 08:23:12 -07:00
cli linux: Fix issue with project-specific env not being found via .envrc (direnv) (#22803) 2025-01-08 16:38:19 +00:00
client chore: Remove explicit usages of once_cell in favor of std (#22407) 2024-12-25 00:33:26 +00:00
clock Use Instant not chrono for telemetry (#20756) 2024-11-19 08:23:12 -07:00
collab Add validation in LspCommand::to_lsp + check for inverted ranges (#22731) 2025-01-06 22:00:36 +00:00
collab_ui collab_ui: Show the chat panel icon when the chat panel is active (#22593) 2025-01-02 22:53:34 +00:00
collections Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
command_palette Match keymap-style action names in command palette (#22149) 2024-12-19 12:48:54 +00:00
command_palette_hooks Use the same InlineAssist action between both assistant and assistant2 (#22126) 2024-12-16 23:57:07 -05:00
context_server Dequalify WindowContext and AsyncWindowContext identifiers (#22444) 2024-12-28 21:21:32 +00:00
context_server_settings Factor tool definitions out of assistant (#21189) 2024-11-25 18:26:34 -05:00
copilot vim: Fix clipping when navigating over inlay hints (#22813) 2025-01-08 09:41:43 +00:00
db chore: Fix some violations of 'needless_pass_by_ref_mut' lint (#18795) 2024-10-07 01:29:58 +02:00
diagnostics Improve diagnostics multibuffer design (#22705) 2025-01-06 14:58:12 +00:00
docs_preprocessor Don't rely on relative path for docs preprocessor (#16883) 2024-08-26 11:43:13 -04:00
editor vim: Fix clipping when navigating over inlay hints (#22813) 2025-01-08 09:41:43 +00:00
evals windows: Set CREATE_NO_WINDOW for commands (#18447) 2024-11-20 16:52:38 -08:00
extension Add language icons to the language selector (#21298) 2024-12-02 15:01:09 -03:00
extension_api zed_extension_api: Add a short explanation of repo format (#21824) 2024-12-10 15:04:47 -05:00
extension_cli Add new extension crate (#20089) 2024-11-01 13:20:30 -04:00
extension_host Add telemetry::event! (#22146) 2024-12-17 11:39:18 -07:00
extensions_ui Improve MessageNotification design (#22829) 2025-01-08 14:51:14 +00:00
feature_flags Add placeholder git panel (#21894) 2024-12-11 22:13:52 -05:00
feedback Dequalify WindowContext and AsyncWindowContext identifiers (#22444) 2024-12-28 21:21:32 +00:00
file_finder Cleanups preparing for WindowContext refactor (#22475) 2024-12-28 21:36:14 +00:00
file_icons Add a CI check for todo! and FIXME comments (#21950) 2024-12-20 08:38:50 +00:00
fs windows: Fix fs watch when file doesn't exist or is a symlink (#22660) 2025-01-07 18:20:22 +00:00
fsevent Retain run loop (#11241) 2024-04-30 23:31:59 -06:00
fuzzy Fuzzy match performance improvements redo (#22561) 2025-01-02 05:31:06 +00:00
git Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
git_hosting_providers Use static LazyLocks for all constant regexes (#22225) 2024-12-19 02:20:35 +00:00
git_ui git_ui: Update commit composer and git status entry UI (#22738) 2025-01-07 18:03:16 +00:00
go_to_line Only debounce the cursor position in multibuffer excerpts (#21946) 2024-12-12 18:27:06 -08:00
google_ai google_ai: Add Gemini 2.0 Flash support (#22665) 2025-01-06 21:28:31 +00:00
gpui Add a dedicated action to open files (#22625) 2025-01-08 14:29:15 +00:00
gpui_macros Rename the OpenFile action to OpenSelectedFilename to better reflect its function (#22494) 2025-01-07 04:18:04 +00:00
html_to_markdown Use static LazyLocks for all constant regexes (#22225) 2024-12-19 02:20:35 +00:00
http_client Use LiveKit's Rust SDK on Linux while continue using Swift SDK on Mac (#21550) 2024-12-05 15:06:17 -08:00
image_viewer chore: Add missing test-support features to terminal_view and image_viewer (#22782) 2025-01-07 17:19:22 +00:00
indexed_docs Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
inline_completion vim: Fix clipping when navigating over inlay hints (#22813) 2025-01-08 09:41:43 +00:00
inline_completion_button Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
install_cli Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
journal chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
language Use standard injection.language and injection.content captures (#22268) 2025-01-07 18:17:49 +00:00
language_extension Add language icons to the language selector (#21298) 2024-12-02 15:01:09 -03:00
language_model google_ai: Add Gemini 2.0 Flash support (#22665) 2025-01-06 21:28:31 +00:00
language_model_selector language_model_selector: Refresh the models when the providers change (#22624) 2025-01-03 19:38:08 +00:00
language_models anthropic: Allow specifying additional beta headers for custom models (#20551) 2025-01-03 23:46:32 +00:00
language_selector Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
language_tools Display language server info in the server logs tab (#22797) 2025-01-07 21:57:59 +00:00
languages Fix rust runnable is not detected if comment is after #[test] attribute (#22823) 2025-01-08 12:51:23 +00:00
livekit_client Use LiveKit's Rust SDK on Linux while continue using Swift SDK on Mac (#21550) 2024-12-05 15:06:17 -08:00
livekit_client_macos Rename livekit_client_macos test_app to suppress warnings (#22719) 2025-01-06 19:17:53 +00:00
livekit_server Use LiveKit's Rust SDK on Linux while continue using Swift SDK on Mac (#21550) 2024-12-05 15:06:17 -08:00
lsp Display language server info in the server logs tab (#22797) 2025-01-07 21:57:59 +00:00
markdown Remove ENABLE_MATH option from pulldown_cmark to fix links which contain dollar sign (#22647) 2025-01-07 21:21:18 +00:00
markdown_preview Add tooltip for Markdown Preview copy code button (#22057) 2024-12-17 14:46:38 -05:00
media Switch to a single GPU context in Blade (#20853) 2024-12-18 14:47:09 -07:00
menu Show restart transformation button after successful inline assist (#20439) 2024-12-13 20:31:54 -08:00
multi_buffer Fix panic on diagnostic hover (#22693) 2025-01-06 02:31:02 +00:00
node_runtime windows: Set CREATE_NO_WINDOW for commands (#18447) 2024-11-20 16:52:38 -08:00
notifications Markdown preview image rendering (#21082) 2024-11-22 14:49:26 -08:00
ollama Fix inaccurate Ollama context length for qwen2.5 models (#20933) 2024-11-22 10:10:01 -05:00
open_ai Introduce staff-only inline completion provider (#21739) 2024-12-09 14:26:36 +01:00
outline chore: Remove outline dependency from breadcrumbs (#22504) 2024-12-30 12:08:26 +00:00
outline_panel Use standard injection.language and injection.content captures (#22268) 2025-01-07 18:17:49 +00:00
paths Add initial FreeBSD support (#20480) 2024-11-11 18:39:05 +01:00
picker Cleanups preparing for WindowContext refactor (#22475) 2024-12-28 21:36:14 +00:00
prettier Add .prettierignore support (#21297) 2024-12-12 15:45:44 -08:00
project Fix panic in request_multiple_lsp_locally (#22806) 2025-01-08 03:34:24 +00:00
project_panel project_panel: Support multiple items in RemoveFromProject (#22455) 2025-01-07 17:25:33 +00:00
project_symbols Add and use CodeLabel::filter_text() (#22054) 2024-12-15 22:24:41 -07:00
proto Fix a bug where repositories were always being marked as changed (#22725) 2025-01-06 19:03:15 +00:00
recent_projects Fix empty title in Recent Projects (#21952) 2025-01-07 03:45:38 +00:00
refineable Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
release_channel chore: Remove explicit usages of once_cell in favor of std (#22407) 2024-12-25 00:33:26 +00:00
remote ssh remoting: Improve error message if netcat is missing (#22767) 2025-01-07 13:16:52 +00:00
remote_server Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
repl chore: Add missing test-support features to terminal_view and image_viewer (#22782) 2025-01-07 17:19:22 +00:00
reqwest_client assistant: Remove low_speed_timeout (#20681) 2024-11-15 07:37:31 +01:00
rich_text Markdown preview image rendering (#21082) 2024-11-22 14:49:26 -08:00
rope rope: Minor optimization for tab indices (#20911) 2024-11-21 08:48:13 +01:00
rpc Upgrade strum to v0.26 (#22633) 2025-01-03 22:23:06 +00:00
search Add toolbar spacing and alignment improvements (#22771) 2025-01-07 16:07:25 +00:00
semantic_index Dequalify WindowContext and ViewContext references (#22477) 2024-12-28 23:09:55 +00:00
semantic_version Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
session chore: Fix some violations of 'needless_pass_by_ref_mut' lint (#18795) 2024-10-07 01:29:58 +02:00
settings Rename the OpenFile action to OpenSelectedFilename to better reflect its function (#22494) 2025-01-07 04:18:04 +00:00
settings_ui Toggle & Switch (#21979) 2024-12-13 14:23:02 -05:00
snippet Snippet choices (#13958) 2024-11-18 22:56:34 +01:00
snippet_provider Overhaul extension registration (#21083) 2024-11-22 19:02:32 -05:00
snippets_ui Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
sqlez Update rustls and sqlx (#21506) 2024-12-03 23:22:26 -05:00
sqlez_macros Add initial FreeBSD support (#20480) 2024-11-11 18:39:05 +01:00
story chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
storybook Dequalify WindowContext and ViewContext references (#22477) 2024-12-28 23:09:55 +00:00
sum_tree Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
supermaven vim: Fix clipping when navigating over inlay hints (#22813) 2025-01-08 09:41:43 +00:00
supermaven_api chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
tab_switcher Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
task Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
tasks_ui Improve truncate efficiency and fix OBOE in truncate_and_remove_front (#22591) 2025-01-02 22:35:36 +00:00
telemetry Allow telemetry::event! with no properties (#22190) 2024-12-18 09:41:47 -07:00
telemetry_events Improve Linux panic reporting (#22202) 2024-12-22 08:20:17 +00:00
terminal terminal: Set TERM to xterm-256color (#22777) 2025-01-07 17:25:48 +00:00
terminal_view chore: Add missing test-support features to terminal_view and image_viewer (#22782) 2025-01-07 17:19:22 +00:00
text Support diagnostic navigation in multibuffers (#22620) 2025-01-03 18:07:56 +00:00
theme Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
theme_extension Overhaul extension registration (#21083) 2024-11-22 19:02:32 -05:00
theme_importer deps: Bump indexmap to 2.0 (#22567) 2025-01-02 12:07:46 +00:00
theme_selector More telemetry events (#22171) 2024-12-17 22:16:59 -07:00
time_format chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
title_bar Adjust TintColor color token terminology (#22826) 2025-01-08 14:40:48 +00:00
toolchain_selector Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
ui Adjust TintColor color token terminology (#22826) 2025-01-08 14:40:48 +00:00
ui_input Remove usage of use gpui::* (#22310) 2024-12-20 22:52:11 +00:00
ui_macros Fix DynamicSpacing docs (#20509) 2024-11-11 12:58:39 -05:00
util Add a dedicated action to open files (#22625) 2025-01-08 14:29:15 +00:00
vcs_menu Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
vim vim: Fix clipping when navigating over inlay hints (#22813) 2025-01-08 09:41:43 +00:00
vim_mode_setting Extract VimModeSetting to its own crate (#21019) 2024-11-21 16:24:38 -05:00
welcome ui: Update Checkbox design (#22794) 2025-01-07 21:11:39 +00:00
workspace Improve MessageNotification design (#22829) 2025-01-08 14:51:14 +00:00
worktree windows: Fix fs watch when file doesn't exist or is a symlink (#22660) 2025-01-07 18:20:22 +00:00
zed Bump Zed to v0.170 (#22838) 2025-01-08 11:02:44 -05:00
zed_actions chore: Remove outline dependency from breadcrumbs (#22504) 2024-12-30 12:08:26 +00:00
zeta zeta: Validate completion responses for markers (#22840) 2025-01-08 16:34:05 +00:00