mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 09:35:44 +02:00
add command_type to help (#14165)
# Description This PR adds an indicator when listing subcommands. That indicator tells whether the command is a plugin, alias, or custom_command.  I changed some of the API to make this work a little easier, namely `get_signatures()` is now `get_signatures_and_declids()`. It was used in only one other place (run-external), so I thought it was fine to change it. There is a long-standing issue with aliases where they reference the command name instead of the alias name. This PR doesn't fix that bug. Example. ```nushell ❯ alias "str fill" = str wrap ``` ```nushell ❯ str ... other stuff Subcommands: str wrap (alias) - Alias for `str wrap` str wrap (plugin) - Wrap text passed into pipeline. ``` # User-Facing Changes Slightly different output of subcommands.
This commit is contained in:
@ -2,6 +2,7 @@ use crate::eval_call;
|
||||
use nu_protocol::{
|
||||
ast::{Argument, Call, Expr, Expression, RecordItem},
|
||||
debugger::WithoutDebug,
|
||||
engine::CommandType,
|
||||
engine::{Command, EngineState, Stack, UNKNOWN_SPAN_ID},
|
||||
record, Category, Config, Example, IntoPipelineData, PipelineData, PositionalArg, Signature,
|
||||
Span, SpanId, Spanned, SyntaxShape, Type, Value,
|
||||
@ -112,16 +113,29 @@ fn get_documentation(
|
||||
// - https://github.com/nushell/nushell/issues/11447
|
||||
// - https://github.com/nushell/nushell/issues/11625
|
||||
let mut subcommands = vec![];
|
||||
let signatures = engine_state.get_signatures(true);
|
||||
for sig in signatures {
|
||||
let signatures = engine_state.get_signatures_and_declids(true);
|
||||
for (sig, decl_id) in signatures {
|
||||
let command_type = engine_state.get_decl(decl_id).command_type();
|
||||
|
||||
// Don't display removed/deprecated commands in the Subcommands list
|
||||
if sig.name.starts_with(&format!("{cmd_name} "))
|
||||
&& !matches!(sig.category, Category::Removed)
|
||||
{
|
||||
subcommands.push(format!(
|
||||
" {help_subcolor_one}{}{RESET} - {}",
|
||||
sig.name, sig.description
|
||||
));
|
||||
// If it's a plugin, alias, or custom command, display that information in the help
|
||||
if command_type == CommandType::Plugin
|
||||
|| command_type == CommandType::Alias
|
||||
|| command_type == CommandType::Custom
|
||||
{
|
||||
subcommands.push(format!(
|
||||
" {help_subcolor_one}{} {help_section_name}({}){RESET} - {}",
|
||||
sig.name, command_type, sig.description
|
||||
));
|
||||
} else {
|
||||
subcommands.push(format!(
|
||||
" {help_subcolor_one}{}{RESET} - {}",
|
||||
sig.name, sig.description
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user