# Objective Closes #52822 When hovering over the LSP status tooltip for a running language server, the binary path is displayed. Currently, this tooltip shows `LanguageServerBinary.path`. However, many language servers are executed through runtimes such as Node or Python. For example, Zed-managed `Basedpyright` produces a `LanguageServerBinary` like: ```Rust LanguageServerBinary { path: "/usr/bin/node", arguments: [ "/home/xin/.local/share/zed/languages/basedpyright/node_modules/basedpyright/langserver.index.js", "--stdio", ], env: ... } ``` In this case, only `"/usr/bin/node"` is displayed, which doesn't convey useful information about the actual language server script being executed. ## Solution There was a PR #53076 in which I was involved, and the solution there was to populate every language server adapter with a special marker for the path to be shown in the tooltip. That solution is accurate, but in order to make this solution work for extension-provided servers, the final diff became huge for a simple fix. So here, as commented in https://github.com/zed-industries/zed/pull/53076#pullrequestreview-4204849892, a guess is performed by a newly introduced function `tooltip_for_server_binary()` to get the real path to be shown. It may have some edge cases, but works for current cases and is simple to implement. ## Testing Added new unit tests, built and tested locally, with the comparision attached in the Showcase section. ## Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content adheres to Zed's UI standards ([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) and [icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md) guidelines) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable ## Showcase For the mentioned `Basedpyright` language server case, the comparision is shown below: | Before | After | |:--:|:--:| | <img width="431" height="187" alt="before" src="https://github.com/user-attachments/assets/0611f2fe-687b-4d67-ba78-380d89ed0212" /> | <img width="582" height="185" alt="after" src="https://github.com/user-attachments/assets/6ad08720-ac53-4b2d-a72c-3febb441e2f1" /> | --- Release Notes: - Improved the LSP status tooltip to display the target script path for runtime-managed language servers
50 lines
1.2 KiB
TOML
50 lines
1.2 KiB
TOML
[package]
|
|
name = "language_tools"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
publish.workspace = true
|
|
license = "GPL-3.0-or-later"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[lib]
|
|
path = "src/language_tools.rs"
|
|
doctest = false
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
client.workspace = true
|
|
collections.workspace = true
|
|
command_palette_hooks.workspace = true
|
|
editor.workspace = true
|
|
edit_prediction.workspace = true
|
|
futures.workspace = true
|
|
gpui.workspace = true
|
|
itertools.workspace = true
|
|
language.workspace = true
|
|
lsp.workspace = true
|
|
menu.workspace = true
|
|
path.workspace = true
|
|
project.workspace = true
|
|
proto.workspace = true
|
|
serde_json.workspace = true
|
|
settings.workspace = true
|
|
telemetry.workspace = true
|
|
theme.workspace = true
|
|
tree-sitter = { workspace = true, features = ["wasm"] }
|
|
sysinfo.workspace = true
|
|
ui.workspace = true
|
|
util.workspace = true
|
|
workspace.workspace = true
|
|
zed_actions.workspace = true
|
|
|
|
[dev-dependencies]
|
|
editor = { workspace = true, features = ["test-support"] }
|
|
release_channel.workspace = true
|
|
gpui = { workspace = true, features = ["test-support"] }
|
|
semver.workspace = true
|
|
util = { workspace = true, features = ["test-support"] }
|
|
zlog.workspace = true
|
|
theme_settings.workspace = true
|