[Lldb-commits] [PATCH] D50802: Expression autocompletion with variables and symbols

2018-08-15 Thread Arnaud Coomans via Phabricator via lldb-commits
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


[Lldb-commits] [PATCH] D50802: Expression autocompletion with variables and symbols

2018-08-16 Thread Arnaud Coomans via Phabricator via lldb-commits
acoomans abandoned this revision.
acoomans added a comment.

@teemperor Nice. Looks like you're way ahead of me. I'll abandon this. Let me 
know if you want help with your code!


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D50802



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits