acoomans created this revision. acoomans added a reviewer: lldb-commits. This adds autocompletion for the `expression` (and thus `print` and `p`) commands. Variables and symbols are suggested.
For example: let's assume we have a struct called //my_struct//. We break, then run: (lldb) p my_ [TAB] will autocomplete to: (lldb) p my_struct Now let's assume we run: (lldb) p m [TAB] we'll get suggestions from all corresponding symbols like this: Available completions: mach_absolute_time mach_approximate_time mach_boottime_usec mach_continuous_approximate_time mach_continuous_time mach_error [...] More (Y/n/a): Repository: rLLDB LLDB https://reviews.llvm.org/D50802 Files: source/Commands/CommandObjectExpression.cpp source/Commands/CommandObjectExpression.h Index: source/Commands/CommandObjectExpression.h =================================================================== --- source/Commands/CommandObjectExpression.h +++ source/Commands/CommandObjectExpression.h @@ -62,6 +62,8 @@ Options *GetOptions() override; + int HandleArgumentCompletion(CompletionRequest &request, OptionElementVector &opt_element_vector) override; + protected: //------------------------------------------------------------------ // IOHandler::Delegate functions @@ -80,6 +82,8 @@ void GetMultilineExpression(); + bool WantsRawCommandString() override { return false; } + OptionGroupOptions m_option_group; OptionGroupFormat m_format_options; OptionGroupValueObjectDisplay m_varobj_options; Index: source/Commands/CommandObjectExpression.cpp =================================================================== --- source/Commands/CommandObjectExpression.cpp +++ source/Commands/CommandObjectExpression.cpp @@ -307,6 +307,16 @@ Options *CommandObjectExpression::GetOptions() { return &m_option_group; } +int CommandObjectExpression::HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) { + CommandCompletions::InvokeCommonCompletionCallbacks( + GetCommandInterpreter(), + CommandCompletions::eVariablePathCompletion | CommandCompletions::eSymbolCompletion, + request, + nullptr); + return request.GetNumberOfMatches(); +} + static lldb_private::Status CanBeUsedForElementCountPrinting(ValueObject &valobj) { CompilerType type(valobj.GetCompilerType());
Index: source/Commands/CommandObjectExpression.h =================================================================== --- source/Commands/CommandObjectExpression.h +++ source/Commands/CommandObjectExpression.h @@ -62,6 +62,8 @@ Options *GetOptions() override; + int HandleArgumentCompletion(CompletionRequest &request, OptionElementVector &opt_element_vector) override; + protected: //------------------------------------------------------------------ // IOHandler::Delegate functions @@ -80,6 +82,8 @@ void GetMultilineExpression(); + bool WantsRawCommandString() override { return false; } + OptionGroupOptions m_option_group; OptionGroupFormat m_format_options; OptionGroupValueObjectDisplay m_varobj_options; Index: source/Commands/CommandObjectExpression.cpp =================================================================== --- source/Commands/CommandObjectExpression.cpp +++ source/Commands/CommandObjectExpression.cpp @@ -307,6 +307,16 @@ Options *CommandObjectExpression::GetOptions() { return &m_option_group; } +int CommandObjectExpression::HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) { + CommandCompletions::InvokeCommonCompletionCallbacks( + GetCommandInterpreter(), + CommandCompletions::eVariablePathCompletion | CommandCompletions::eSymbolCompletion, + request, + nullptr); + return request.GetNumberOfMatches(); +} + static lldb_private::Status CanBeUsedForElementCountPrinting(ValueObject &valobj) { CompilerType type(valobj.GetCompilerType());
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits