Add language toolchains (#19576)

This PR adds support for selecting toolchains for a given language (e.g.
Rust toolchains or Python virtual environments) with support for SSH
projects provided out of the box. For Python we piggy-back off of
[PET](https://github.com/microsoft/python-environment-tools), a library
maintained by Microsoft.
Closes #16421
Closes #7646

Release Notes:

- Added toolchain selector to the status bar (with initial support for
Python virtual environments)
This commit is contained in:
Piotr Osiewicz
2024-10-28 15:34:03 +01:00
committed by GitHub
parent 03bd95405b
commit cdddb4d360
33 changed files with 2221 additions and 133 deletions
Generated
+461 -32
View File
@@ -291,6 +291,12 @@ dependencies = [
"syn 2.0.76",
]
[[package]]
name = "arraydeque"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236"
[[package]]
name = "arrayref"
version = "0.3.8"
@@ -385,7 +391,7 @@ dependencies = [
"ctor",
"db",
"editor",
"env_logger",
"env_logger 0.11.5",
"feature_flags",
"fs",
"futures 0.3.30",
@@ -2551,7 +2557,7 @@ dependencies = [
"dashmap 6.0.1",
"derive_more",
"editor",
"env_logger",
"env_logger 0.11.5",
"envy",
"file_finder",
"fs",
@@ -2706,7 +2712,7 @@ dependencies = [
"command_palette_hooks",
"ctor",
"editor",
"env_logger",
"env_logger 0.11.5",
"fuzzy",
"go_to_line",
"gpui",
@@ -3483,7 +3489,7 @@ dependencies = [
"collections",
"ctor",
"editor",
"env_logger",
"env_logger 0.11.5",
"futures 0.3.30",
"gpui",
"language",
@@ -3671,7 +3677,7 @@ dependencies = [
"ctor",
"db",
"emojis",
"env_logger",
"env_logger 0.11.5",
"file_icons",
"futures 0.3.30",
"fuzzy",
@@ -3877,6 +3883,19 @@ dependencies = [
"regex",
]
[[package]]
name = "env_logger"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
dependencies = [
"humantime",
"is-terminal",
"log",
"regex",
"termcolor",
]
[[package]]
name = "env_logger"
version = "0.11.5"
@@ -3985,7 +4004,7 @@ dependencies = [
"client",
"clock",
"collections",
"env_logger",
"env_logger 0.11.5",
"feature_flags",
"fs",
"git",
@@ -4080,7 +4099,7 @@ dependencies = [
"client",
"collections",
"ctor",
"env_logger",
"env_logger 0.11.5",
"fs",
"futures 0.3.30",
"gpui",
@@ -4122,7 +4141,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"clap",
"env_logger",
"env_logger 0.11.5",
"extension",
"fs",
"language",
@@ -4281,7 +4300,7 @@ dependencies = [
"collections",
"ctor",
"editor",
"env_logger",
"env_logger 0.11.5",
"file_icons",
"futures 0.3.30",
"fuzzy",
@@ -5036,7 +5055,7 @@ dependencies = [
"ctor",
"derive_more",
"embed-resource",
"env_logger",
"env_logger 0.11.5",
"etagere",
"filedescriptor",
"flume",
@@ -5226,6 +5245,15 @@ dependencies = [
"serde",
]
[[package]]
name = "hashlink"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
dependencies = [
"hashbrown 0.14.5",
]
[[package]]
name = "hashlink"
version = "0.9.1"
@@ -6184,7 +6212,7 @@ dependencies = [
"collections",
"ctor",
"ec4rs",
"env_logger",
"env_logger 0.11.5",
"futures 0.3.30",
"fuzzy",
"git",
@@ -6241,7 +6269,7 @@ dependencies = [
"copilot",
"ctor",
"editor",
"env_logger",
"env_logger 0.11.5",
"feature_flags",
"futures 0.3.30",
"google_ai",
@@ -6298,7 +6326,7 @@ dependencies = [
"collections",
"copilot",
"editor",
"env_logger",
"env_logger 0.11.5",
"futures 0.3.30",
"gpui",
"language",
@@ -6332,6 +6360,11 @@ dependencies = [
"lsp",
"node_runtime",
"paths",
"pet",
"pet-conda",
"pet-core",
"pet-poetry",
"pet-reporter",
"project",
"regex",
"rope",
@@ -6628,7 +6661,7 @@ dependencies = [
"async-pipe",
"collections",
"ctor",
"env_logger",
"env_logger 0.11.5",
"futures 0.3.30",
"gpui",
"log",
@@ -6711,7 +6744,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"assets",
"env_logger",
"env_logger 0.11.5",
"futures 0.3.30",
"gpui",
"language",
@@ -6824,7 +6857,7 @@ dependencies = [
"clap",
"clap_complete",
"elasticlunr-rs",
"env_logger",
"env_logger 0.11.5",
"futures-util",
"handlebars 5.1.2",
"ignore",
@@ -7006,6 +7039,15 @@ dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "msvc_spectre_libs"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8661ace213a0a130c7c5b9542df5023aedf092a02008ccf477b39ff108990305"
dependencies = [
"cc",
]
[[package]]
name = "multi_buffer"
version = "0.1.0"
@@ -7014,7 +7056,7 @@ dependencies = [
"clock",
"collections",
"ctor",
"env_logger",
"env_logger 0.11.5",
"futures 0.3.30",
"gpui",
"itertools 0.13.0",
@@ -7974,6 +8016,366 @@ dependencies = [
"sha2",
]
[[package]]
name = "pet"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"clap",
"env_logger 0.10.2",
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-conda",
"pet-core",
"pet-env-var-path",
"pet-fs",
"pet-global-virtualenvs",
"pet-homebrew",
"pet-jsonrpc",
"pet-linux-global-python",
"pet-mac-commandlinetools",
"pet-mac-python-org",
"pet-mac-xcode",
"pet-pipenv",
"pet-poetry",
"pet-pyenv",
"pet-python-utils",
"pet-reporter",
"pet-telemetry",
"pet-venv",
"pet-virtualenv",
"pet-virtualenvwrapper",
"pet-windows-registry",
"pet-windows-store",
"serde",
"serde_json",
]
[[package]]
name = "pet-conda"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"env_logger 0.10.2",
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-reporter",
"regex",
"serde",
"serde_json",
"yaml-rust2",
]
[[package]]
name = "pet-core"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"clap",
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-fs",
"regex",
"serde",
"serde_json",
]
[[package]]
name = "pet-env-var-path"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-conda",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-virtualenv",
"regex",
]
[[package]]
name = "pet-fs"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"log",
"msvc_spectre_libs",
]
[[package]]
name = "pet-global-virtualenvs"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"log",
"msvc_spectre_libs",
"pet-conda",
"pet-core",
"pet-fs",
"pet-virtualenv",
]
[[package]]
name = "pet-homebrew"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-conda",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-virtualenv",
"regex",
"serde",
"serde_json",
]
[[package]]
name = "pet-jsonrpc"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"env_logger 0.10.2",
"log",
"msvc_spectre_libs",
"pet-core",
"serde",
"serde_json",
]
[[package]]
name = "pet-linux-global-python"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-virtualenv",
]
[[package]]
name = "pet-mac-commandlinetools"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-virtualenv",
]
[[package]]
name = "pet-mac-python-org"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-virtualenv",
]
[[package]]
name = "pet-mac-xcode"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-virtualenv",
]
[[package]]
name = "pet-pipenv"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-virtualenv",
]
[[package]]
name = "pet-poetry"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"base64 0.22.1",
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-reporter",
"pet-virtualenv",
"regex",
"serde",
"serde_json",
"sha2",
"toml 0.8.19",
]
[[package]]
name = "pet-pyenv"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-conda",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-reporter",
"regex",
"serde",
"serde_json",
]
[[package]]
name = "pet-python-utils"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"env_logger 0.10.2",
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"regex",
"serde",
"serde_json",
"sha2",
]
[[package]]
name = "pet-reporter"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"env_logger 0.10.2",
"log",
"msvc_spectre_libs",
"pet-core",
"pet-jsonrpc",
"serde",
"serde_json",
]
[[package]]
name = "pet-telemetry"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"env_logger 0.10.2",
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
"regex",
]
[[package]]
name = "pet-venv"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"log",
"msvc_spectre_libs",
"pet-core",
"pet-python-utils",
"pet-virtualenv",
]
[[package]]
name = "pet-virtualenv"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
]
[[package]]
name = "pet-virtualenvwrapper"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-virtualenv",
]
[[package]]
name = "pet-windows-registry"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-conda",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-virtualenv",
"pet-windows-store",
"regex",
"winreg 0.52.0",
]
[[package]]
name = "pet-windows-store"
version = "0.1.0"
source = "git+https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f28c46633abd5448a52b1f396c322e0d6c"
dependencies = [
"lazy_static",
"log",
"msvc_spectre_libs",
"pet-core",
"pet-fs",
"pet-python-utils",
"pet-virtualenv",
"regex",
"winreg 0.52.0",
]
[[package]]
name = "petgraph"
version = "0.6.5"
@@ -8062,7 +8464,7 @@ dependencies = [
"anyhow",
"ctor",
"editor",
"env_logger",
"env_logger 0.11.5",
"gpui",
"menu",
"serde",
@@ -8408,7 +8810,7 @@ dependencies = [
"client",
"clock",
"collections",
"env_logger",
"env_logger 0.11.5",
"fs",
"futures 0.3.30",
"fuzzy",
@@ -9123,7 +9525,7 @@ dependencies = [
"clap",
"client",
"clock",
"env_logger",
"env_logger 0.11.5",
"fork",
"fs",
"futures 0.3.30",
@@ -9174,7 +9576,7 @@ dependencies = [
"collections",
"command_palette_hooks",
"editor",
"env_logger",
"env_logger 0.11.5",
"futures 0.3.30",
"gpui",
"http_client",
@@ -9454,7 +9856,7 @@ dependencies = [
"arrayvec",
"criterion",
"ctor",
"env_logger",
"env_logger 0.11.5",
"gpui",
"log",
"rand 0.8.5",
@@ -9485,7 +9887,7 @@ dependencies = [
"base64 0.22.1",
"chrono",
"collections",
"env_logger",
"env_logger 0.11.5",
"futures 0.3.30",
"gpui",
"parking_lot",
@@ -10074,7 +10476,7 @@ dependencies = [
"client",
"clock",
"collections",
"env_logger",
"env_logger 0.11.5",
"feature_flags",
"fs",
"futures 0.3.30",
@@ -10767,7 +11169,7 @@ dependencies = [
"futures-io",
"futures-util",
"hashbrown 0.14.5",
"hashlink",
"hashlink 0.9.1",
"hex",
"indexmap 2.4.0",
"log",
@@ -11091,7 +11493,7 @@ version = "0.1.0"
dependencies = [
"arrayvec",
"ctor",
"env_logger",
"env_logger 0.11.5",
"log",
"rand 0.8.5",
"rayon",
@@ -11105,7 +11507,7 @@ dependencies = [
"client",
"collections",
"editor",
"env_logger",
"env_logger 0.11.5",
"futures 0.3.30",
"gpui",
"http_client",
@@ -11404,7 +11806,7 @@ dependencies = [
"collections",
"ctor",
"editor",
"env_logger",
"env_logger 0.11.5",
"gpui",
"language",
"menu",
@@ -11611,7 +12013,7 @@ dependencies = [
"clock",
"collections",
"ctor",
"env_logger",
"env_logger 0.11.5",
"gpui",
"http_client",
"log",
@@ -12100,6 +12502,21 @@ dependencies = [
"winnow 0.6.18",
]
[[package]]
name = "toolchain_selector"
version = "0.1.0"
dependencies = [
"editor",
"fuzzy",
"gpui",
"language",
"picker",
"project",
"ui",
"util",
"workspace",
]
[[package]]
name = "topological-sort"
version = "0.2.2"
@@ -14269,7 +14686,7 @@ dependencies = [
"collections",
"db",
"derive_more",
"env_logger",
"env_logger 0.11.5",
"fs",
"futures 0.3.30",
"git",
@@ -14306,7 +14723,7 @@ dependencies = [
"anyhow",
"clock",
"collections",
"env_logger",
"env_logger 0.11.5",
"fs",
"futures 0.3.30",
"fuzzy",
@@ -14476,6 +14893,17 @@ dependencies = [
"clap",
]
[[package]]
name = "yaml-rust2"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8902160c4e6f2fb145dbe9d6760a75e3c9522d8bf796ed7047c85919ac7115f8"
dependencies = [
"arraydeque",
"encoding_rs",
"hashlink 0.8.4",
]
[[package]]
name = "yansi"
version = "1.0.1"
@@ -14589,7 +15017,7 @@ dependencies = [
"db",
"diagnostics",
"editor",
"env_logger",
"env_logger 0.11.5",
"extension",
"extensions_ui",
"feature_flags",
@@ -14656,6 +15084,7 @@ dependencies = [
"theme",
"theme_selector",
"time",
"toolchain_selector",
"tree-sitter-md",
"tree-sitter-rust",
"ui",