diff options
Diffstat (limited to 'lldb/source/Commands')
-rw-r--r-- | lldb/source/Commands/CommandObjectHelp.cpp | 92 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectHelp.h | 2 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectMultiword.cpp | 13 |
3 files changed, 22 insertions, 85 deletions
diff --git a/lldb/source/Commands/CommandObjectHelp.cpp b/lldb/source/Commands/CommandObjectHelp.cpp index 00e2551842f..7d638a4732e 100644 --- a/lldb/source/Commands/CommandObjectHelp.cpp +++ b/lldb/source/Commands/CommandObjectHelp.cpp @@ -119,13 +119,7 @@ CommandObjectHelp::DoExecute (Args& command, CommandReturnObject &result) { std::string cmd_string; command.GetCommandString (cmd_string); - if (matches.GetSize() < 2) - { - result.AppendErrorWithFormat("'%s' is not a known command.\n" - "Try 'help' to see a current list of commands.\n", - cmd_string.c_str()); - } - else + if (matches.GetSize() >= 2) { StreamString s; s.Printf ("ambiguous command %s", cmd_string.c_str()); @@ -136,83 +130,29 @@ CommandObjectHelp::DoExecute (Args& command, CommandReturnObject &result) } s.Printf ("\n"); result.AppendError(s.GetData()); + result.SetStatus (eReturnStatusFailed); + return false; } - - result.SetStatus (eReturnStatusFailed); - } - else - { - Stream &output_strm = result.GetOutputStream(); - if (sub_cmd_obj->GetOptions() != NULL) - { - if (sub_cmd_obj->WantsRawCommandString()) - { - std::string help_text (sub_cmd_obj->GetHelp()); - help_text.append (" This command takes 'raw' input (no need to quote stuff)."); - m_interpreter.OutputFormattedHelpText (output_strm, "", "", help_text.c_str(), 1); - } - else - m_interpreter.OutputFormattedHelpText (output_strm, "", "", sub_cmd_obj->GetHelp(), 1); - output_strm.Printf ("\nSyntax: %s\n", sub_cmd_obj->GetSyntax()); - sub_cmd_obj->GetOptions()->GenerateOptionUsage (output_strm, sub_cmd_obj); - const char *long_help = sub_cmd_obj->GetHelpLong(); - if ((long_help != NULL) - && (strlen (long_help) > 0)) - output_strm.Printf ("\n%s", long_help); - if (sub_cmd_obj->WantsRawCommandString() && !sub_cmd_obj->WantsCompletion()) - { - // Emit the message about using ' -- ' between the end of the command options and the raw input - // conditionally, i.e., only if the command object does not want completion. - m_interpreter.OutputFormattedHelpText (output_strm, "", "", - "\nIMPORTANT NOTE: Because this command takes 'raw' input, if you use any command options" - " you must use ' -- ' between the end of the command options and the beginning of the raw input.", 1); - } - else if (sub_cmd_obj->GetNumArgumentEntries() > 0 - && sub_cmd_obj->GetOptions() - && sub_cmd_obj->GetOptions()->NumCommandOptions() > 0) - { - // Also emit a warning about using "--" in case you are using a command that takes options and arguments. - m_interpreter.OutputFormattedHelpText (output_strm, "", "", - "\nThis command takes options and free-form arguments. If your arguments resemble" - " option specifiers (i.e., they start with a - or --), you must use ' -- ' between" - " the end of the command options and the beginning of the arguments.", 1); - } - - // Mark this help command with a success status. - result.SetStatus (eReturnStatusSuccessFinishNoResult); - } - else if (sub_cmd_obj->IsMultiwordObject()) + else if (!sub_cmd_obj) { - if (sub_cmd_obj->WantsRawCommandString()) - { - std::string help_text (sub_cmd_obj->GetHelp()); - help_text.append (" This command takes 'raw' input (no need to quote stuff)."); - m_interpreter.OutputFormattedHelpText (output_strm, "", "", help_text.c_str(), 1); - } - else - m_interpreter.OutputFormattedHelpText (output_strm, "", "", sub_cmd_obj->GetHelp(), 1); - sub_cmd_obj->GenerateHelpText (result); + result.AppendErrorWithFormat("'%s' is not a known command.\n" + "Try 'help' to see a current list of commands.\n", + cmd_string.c_str()); + result.SetStatus (eReturnStatusFailed); + return false; } else { - const char *long_help = sub_cmd_obj->GetHelpLong(); - if ((long_help != NULL) - && (strlen (long_help) > 0)) - output_strm.Printf ("%s", long_help); - else if (sub_cmd_obj->WantsRawCommandString()) - { - std::string help_text (sub_cmd_obj->GetHelp()); - help_text.append (" This command takes 'raw' input (no need to quote stuff)."); - m_interpreter.OutputFormattedHelpText (output_strm, "", "", help_text.c_str(), 1); - } - else - m_interpreter.OutputFormattedHelpText (output_strm, "", "", sub_cmd_obj->GetHelp(), 1); - output_strm.Printf ("\nSyntax: %s\n", sub_cmd_obj->GetSyntax()); - // Mark this help command with a success status. - result.SetStatus (eReturnStatusSuccessFinishNoResult); + result.GetOutputStream().Printf("'%s' is not a known command.\n" + "Try 'help' to see a current list of commands.\n" + "The closest match is '%s'. Help on it follows.\n\n", + cmd_string.c_str(), + sub_cmd_obj->GetCommandName()); } } + sub_cmd_obj->GenerateHelpText(result); + if (is_alias_command) { StreamString sstr; diff --git a/lldb/source/Commands/CommandObjectHelp.h b/lldb/source/Commands/CommandObjectHelp.h index 91a40b52949..6e8f9d4cbc7 100644 --- a/lldb/source/Commands/CommandObjectHelp.h +++ b/lldb/source/Commands/CommandObjectHelp.h @@ -108,7 +108,7 @@ protected: virtual bool DoExecute (Args& command, CommandReturnObject &result); - + private: CommandOptions m_options; diff --git a/lldb/source/Commands/CommandObjectMultiword.cpp b/lldb/source/Commands/CommandObjectMultiword.cpp index bfb5132a644..f84b401f3aa 100644 --- a/lldb/source/Commands/CommandObjectMultiword.cpp +++ b/lldb/source/Commands/CommandObjectMultiword.cpp @@ -115,7 +115,7 @@ CommandObjectMultiword::Execute(const char *args_string, CommandReturnObject &re const size_t argc = args.GetArgumentCount(); if (argc == 0) { - GenerateHelpText (result); + this->CommandObject::GenerateHelpText (result); } else { @@ -125,7 +125,7 @@ CommandObjectMultiword::Execute(const char *args_string, CommandReturnObject &re { if (::strcasecmp (sub_command, "help") == 0) { - GenerateHelpText (result); + this->CommandObject::GenerateHelpText (result); } else if (!m_subcommand_dict.empty()) { @@ -181,12 +181,11 @@ CommandObjectMultiword::Execute(const char *args_string, CommandReturnObject &re } void -CommandObjectMultiword::GenerateHelpText (CommandReturnObject &result) +CommandObjectMultiword::GenerateHelpText (Stream &output_stream) { // First time through here, generate the help text for the object and // push it to the return result object as well - Stream &output_stream = result.GetOutputStream(); output_stream.PutCString ("The following subcommands are supported:\n\n"); CommandMap::iterator pos; @@ -203,14 +202,14 @@ CommandObjectMultiword::GenerateHelpText (CommandReturnObject &result) { std::string help_text (pos->second->GetHelp()); help_text.append (" This command takes 'raw' input (no need to quote stuff)."); - m_interpreter.OutputFormattedHelpText (result.GetOutputStream(), + m_interpreter.OutputFormattedHelpText (output_stream, indented_command.c_str(), "--", help_text.c_str(), max_len); } else - m_interpreter.OutputFormattedHelpText (result.GetOutputStream(), + m_interpreter.OutputFormattedHelpText (output_stream, indented_command.c_str(), "--", pos->second->GetHelp(), @@ -218,8 +217,6 @@ CommandObjectMultiword::GenerateHelpText (CommandReturnObject &result) } output_stream.PutCString ("\nFor more help on any particular subcommand, type 'help <command> <subcommand>'.\n"); - - result.SetStatus (eReturnStatusSuccessFinishNoResult); } int |