mirror of
https://github.com/nushell/nushell
synced 2024-11-10 15:14:14 +00:00
Change how to identify custom comamnd (#6187)
Co-authored-by: Frank <v-frankz@microsoft.com>
This commit is contained in:
parent
ce6df93d05
commit
ebf845f431
5 changed files with 19 additions and 5 deletions
|
@ -142,7 +142,7 @@ fn help(
|
|||
|
||||
cols.push("is_custom".into());
|
||||
vals.push(Value::Bool {
|
||||
val: decl.get_block_id().is_some(),
|
||||
val: decl.is_custom_command(),
|
||||
span: head,
|
||||
});
|
||||
|
||||
|
@ -243,7 +243,7 @@ fn help(
|
|||
|
||||
cols.push("is_custom".into());
|
||||
vals.push(Value::Bool {
|
||||
val: decl.get_block_id().is_some(),
|
||||
val: decl.is_custom_command(),
|
||||
span: head,
|
||||
});
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ fn get_entry_in_aliases(engine_state: &EngineState, name: &str, span: Span) -> O
|
|||
|
||||
fn get_entry_in_commands(engine_state: &EngineState, name: &str, span: Span) -> Option<Value> {
|
||||
if let Some(decl_id) = engine_state.find_decl(name.as_bytes(), &[]) {
|
||||
let (msg, is_builtin) = if engine_state.get_decl(decl_id).get_block_id().is_some() {
|
||||
let (msg, is_builtin) = if engine_state.get_decl(decl_id).is_custom_command() {
|
||||
("Nushell custom command", false)
|
||||
} else {
|
||||
("Nushell built-in command", true)
|
||||
|
|
|
@ -1101,7 +1101,7 @@ pub fn create_scope(
|
|||
cols.push("is_builtin".to_string());
|
||||
// we can only be a is_builtin or is_custom, not both
|
||||
vals.push(Value::Bool {
|
||||
val: decl.get_block_id().is_none(),
|
||||
val: !decl.is_custom_command(),
|
||||
span,
|
||||
});
|
||||
|
||||
|
@ -1119,7 +1119,7 @@ pub fn create_scope(
|
|||
|
||||
cols.push("is_custom".to_string());
|
||||
vals.push(Value::Bool {
|
||||
val: decl.get_block_id().is_some(),
|
||||
val: decl.is_custom_command(),
|
||||
span,
|
||||
});
|
||||
|
||||
|
|
|
@ -30,6 +30,10 @@ impl Command for KnownExternal {
|
|||
true
|
||||
}
|
||||
|
||||
fn is_builtin(&self) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
fn run(
|
||||
&self,
|
||||
engine_state: &EngineState,
|
||||
|
|
|
@ -37,6 +37,16 @@ pub trait Command: Send + Sync + CommandClone {
|
|||
false
|
||||
}
|
||||
|
||||
// This is an enhanced method to determine if a command is custom command or not
|
||||
// since extern "foo" [] and def "foo" [] behaves differently
|
||||
fn is_custom_command(&self) -> bool {
|
||||
if self.get_block_id().is_some() {
|
||||
true
|
||||
} else {
|
||||
self.is_known_external()
|
||||
}
|
||||
}
|
||||
|
||||
// Is a sub command
|
||||
fn is_sub(&self) -> bool {
|
||||
self.name().contains(' ')
|
||||
|
|
Loading…
Reference in a new issue