mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-04 06:34:26 +00:00
Activate the nushell virtualenv overlay correctly
The activate.nu file works a little differently than it's counterparts in other shells, and it needs to be invoked as an overlay, rather than sourced directly into the shell. This fixes an outstanding issues left over from #6323.
This commit is contained in:
parent
802405f6bc
commit
3847762d8c
1 changed files with 12 additions and 1 deletions
|
@ -60,9 +60,11 @@ impl Project {
|
|||
.detach();
|
||||
|
||||
if let Some(python_settings) = &python_settings.as_option() {
|
||||
let activate_command = Project::get_activate_command(python_settings);
|
||||
let activate_script_path =
|
||||
self.find_activate_script_path(python_settings, working_directory);
|
||||
self.activate_python_virtual_environment(
|
||||
activate_command,
|
||||
activate_script_path,
|
||||
&terminal_handle,
|
||||
cx,
|
||||
|
@ -104,15 +106,24 @@ impl Project {
|
|||
None
|
||||
}
|
||||
|
||||
fn get_activate_command(settings: &VenvSettingsContent) -> &'static str {
|
||||
match settings.activate_script {
|
||||
terminal_settings::ActivateScript::Nushell => "overlay use",
|
||||
_ => "source",
|
||||
}
|
||||
}
|
||||
|
||||
fn activate_python_virtual_environment(
|
||||
&mut self,
|
||||
activate_command: &'static str,
|
||||
activate_script: Option<PathBuf>,
|
||||
terminal_handle: &Model<Terminal>,
|
||||
cx: &mut ModelContext<Project>,
|
||||
) {
|
||||
if let Some(activate_script) = activate_script {
|
||||
// Paths are not strings so we need to jump through some hoops to format the command without `format!`
|
||||
let mut command = Vec::from("source ".as_bytes());
|
||||
let mut command = Vec::from(activate_command.as_bytes());
|
||||
command.push(b' ');
|
||||
command.extend_from_slice(activate_script.as_os_str().as_bytes());
|
||||
command.push(b'\n');
|
||||
|
||||
|
|
Loading…
Reference in a new issue