mirror of
https://github.com/nushell/nushell.git
synced 2025-07-01 07:00:37 +02:00
add command g to switch shell quickly (#4014)
Signed-off-by: Tw <tw19881113@gmail.com>
This commit is contained in:
51
crates/nu-command/src/commands/shells/goto.rs
Normal file
51
crates/nu-command/src/commands/shells/goto.rs
Normal file
@ -0,0 +1,51 @@
|
||||
use crate::prelude::*;
|
||||
use nu_engine::WholeStreamCommand;
|
||||
use nu_errors::ShellError;
|
||||
use nu_protocol::{CommandAction, ReturnSuccess, Signature, SyntaxShape};
|
||||
|
||||
pub struct Goto;
|
||||
|
||||
impl WholeStreamCommand for Goto {
|
||||
fn name(&self) -> &str {
|
||||
"g"
|
||||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("g").required("index", SyntaxShape::Int, "the shell's index to go to")
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
"Go to specified shell."
|
||||
}
|
||||
|
||||
fn run_with_actions(&self, args: CommandArgs) -> Result<ActionStream, ShellError> {
|
||||
goto(args)
|
||||
}
|
||||
|
||||
fn examples(&self) -> Vec<Example> {
|
||||
vec![Example {
|
||||
description: "Enter the first shell",
|
||||
example: "g 0",
|
||||
result: None,
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
fn goto(args: CommandArgs) -> Result<ActionStream, ShellError> {
|
||||
Ok(ActionStream::one(ReturnSuccess::action(
|
||||
CommandAction::GotoShell(args.req(0)?),
|
||||
)))
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::Goto;
|
||||
use super::ShellError;
|
||||
|
||||
#[test]
|
||||
fn examples_work_as_expected() -> Result<(), ShellError> {
|
||||
use crate::examples::test as test_examples;
|
||||
|
||||
test_examples(Goto {})
|
||||
}
|
||||
}
|
@ -1,11 +1,13 @@
|
||||
mod command;
|
||||
mod enter;
|
||||
mod exit;
|
||||
mod goto;
|
||||
mod next;
|
||||
mod prev;
|
||||
|
||||
pub use command::Shells;
|
||||
pub use enter::Enter;
|
||||
pub use exit::Exit;
|
||||
pub use goto::Goto;
|
||||
pub use next::Next;
|
||||
pub use prev::Previous;
|
||||
|
@ -77,6 +77,7 @@ pub fn create_default_context(interactive: bool) -> Result<EvaluationContext, Bo
|
||||
// Shells
|
||||
whole_stream_command(Next),
|
||||
whole_stream_command(Previous),
|
||||
whole_stream_command(Goto),
|
||||
whole_stream_command(Shells),
|
||||
whole_stream_command(Enter),
|
||||
whole_stream_command(Exit),
|
||||
|
Reference in New Issue
Block a user