From 85798cc11aba64e031b436ff00dc549fd3ba6e00 Mon Sep 17 00:00:00 2001 From: Aireil <33433913+Aireil@users.noreply.github.com> Date: Mon, 20 Feb 2023 03:49:41 +0100 Subject: [PATCH] feat: get command description with /xlhelp --- Dalamud/Interface/Internal/DalamudCommands.cs | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/Dalamud/Interface/Internal/DalamudCommands.cs b/Dalamud/Interface/Internal/DalamudCommands.cs index 7855f9c54..18b0ba7ae 100644 --- a/Dalamud/Interface/Internal/DalamudCommands.cs +++ b/Dalamud/Interface/Internal/DalamudCommands.cs @@ -32,7 +32,7 @@ internal class DalamudCommands : IServiceType commandManager.AddHandler("/xlhelp", new CommandInfo(this.OnHelpCommand) { - HelpMessage = Loc.Localize("DalamudCmdInfoHelp", "Shows list of commands available."), + HelpMessage = Loc.Localize("DalamudCmdInfoHelp", "Shows list of commands available. If an argument is provided, shows help for that command."), }); commandManager.AddHandler("/xlmute", new CommandInfo(this.OnBadWordsAddCommand) @@ -147,15 +147,23 @@ internal class DalamudCommands : IServiceType var chatGui = Service.Get(); var commandManager = Service.Get(); - var showDebug = arguments.Contains("debug"); - - chatGui.Print(Loc.Localize("DalamudCmdHelpAvailable", "Available commands:")); - foreach (var cmd in commandManager.Commands) + if (arguments.IsNullOrWhitespace()) { - if (!cmd.Value.ShowInHelp && !showDebug) - continue; + chatGui.Print(Loc.Localize("DalamudCmdHelpAvailable", "Available commands:")); + foreach (var cmd in commandManager.Commands) + { + if (!cmd.Value.ShowInHelp) + continue; - chatGui.Print($"{cmd.Key}: {cmd.Value.HelpMessage}"); + chatGui.Print($"{cmd.Key}: {cmd.Value.HelpMessage}"); + } + } + else + { + var targetCommandText = arguments[0] == '/' ? arguments : $"/{arguments}"; + chatGui.Print(commandManager.Commands.TryGetValue(targetCommandText, out var targetCommand) + ? $"{targetCommandText}: {targetCommand.HelpMessage}" + : Loc.Localize("DalamudCmdHelpNotFound", "Command not found.")); } }