diff options
author | Raphael Isemann <teemperor@gmail.com> | 2019-09-24 07:18:09 +0000 |
---|---|---|
committer | Raphael Isemann <teemperor@gmail.com> | 2019-09-24 07:18:09 +0000 |
commit | 6ba63d8851aee10de0e5719faee27a4d3f996b58 (patch) | |
tree | 39b04d9316a6383476ad51d6b3bd451f16139456 /lldb/source/Commands/CommandObjectLog.cpp | |
parent | bd2a910a63f298aa38fac282f1ed858c21075eeb (diff) | |
download | llvm-6ba63d8851aee10de0e5719faee27a4d3f996b58.zip llvm-6ba63d8851aee10de0e5719faee27a4d3f996b58.tar.gz llvm-6ba63d8851aee10de0e5719faee27a4d3f996b58.tar.bz2 |
[lldb] Add completion support for log enable/disable/list
Reviewers: #lldb, JDevlieghere
Reviewed By: JDevlieghere
Subscribers: JDevlieghere, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D67903
llvm-svn: 372691
Diffstat (limited to 'lldb/source/Commands/CommandObjectLog.cpp')
-rw-r--r-- | lldb/source/Commands/CommandObjectLog.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lldb/source/Commands/CommandObjectLog.cpp b/lldb/source/Commands/CommandObjectLog.cpp index 3035a64..31a876c 100644 --- a/lldb/source/Commands/CommandObjectLog.cpp +++ b/lldb/source/Commands/CommandObjectLog.cpp @@ -34,6 +34,21 @@ using namespace lldb_private; #define LLDB_OPTIONS_log #include "CommandOptions.inc" +/// Common completion logic for log enable/disable. +static void CompleteEnableDisable(CompletionRequest &request) { + size_t arg_index = request.GetCursorIndex(); + if (arg_index == 0) { // We got: log enable/disable x[tab] + for (llvm::StringRef channel : Log::ListChannels()) + request.TryCompleteCurrentArg(channel); + } else if (arg_index >= 1) { // We got: log enable/disable channel x[tab] + llvm::StringRef channel = request.GetParsedLine().GetArgumentAtIndex(0); + Log::ForEachChannelCategory( + channel, [&request](llvm::StringRef name, llvm::StringRef desc) { + request.TryCompleteCurrentArg(name, desc); + }); + } +} + class CommandObjectLogEnable : public CommandObjectParsed { public: // Constructors and Destructors @@ -134,6 +149,12 @@ public: uint32_t log_options; }; + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { + CompleteEnableDisable(request); + } + protected: bool DoExecute(Args &args, CommandReturnObject &result) override { if (args.GetArgumentCount() < 2) { @@ -202,6 +223,12 @@ public: ~CommandObjectLogDisable() override = default; + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { + CompleteEnableDisable(request); + } + protected: bool DoExecute(Args &args, CommandReturnObject &result) override { if (args.empty()) { @@ -254,6 +281,13 @@ public: ~CommandObjectLogList() override = default; + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { + for (llvm::StringRef channel : Log::ListChannels()) + request.TryCompleteCurrentArg(channel); + } + protected: bool DoExecute(Args &args, CommandReturnObject &result) override { std::string output; |