[Lldb-commits] [PATCH] D51175: Add support for descriptions with command completions.

Raphael Isemann via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Aug 23 10:54:05 PDT 2018


teemperor created this revision.
teemperor added a reviewer: LLDB.

This patch adds a framework for adding descriptions to the command completions we provide.
It also adds descriptions for completed top-level commands so that we can test this code.

Completions are in general supposed to be displayed alongside the completion itself. The descriptions
can be used to provide additional information about the completion to the user. Examples for descriptions
are function signatures when completing function calls in the expression command or the binary name
when providing completion for a symbol.

There is still some boilerplate code from the old completion API left in LLDB (mostly because the respective
APIs are reused for non-completion related purposes, so the CompletionRequest doesn't make sense to be
used), so that's why I still had to change some function signatures. Also, as the old API only passes around a
list of matches, and the descriptions are for these functions just another list, I had to add some code that
essentially just ensures that both lists are always the same side (e.g. all the manual calls to
`descriptions->AddString(X)` below a `matches->AddString(Y)` call).

An example completion with descriptions looks like this:

  (lldb) pl
  Available completions:
          platform -- Commands to manage and create platforms.
          plugin   -- Commands for managing LLDB plugins.


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D51175

Files:
  include/lldb/API/SBCommandInterpreter.h
  include/lldb/Core/IOHandler.h
  include/lldb/Expression/REPL.h
  include/lldb/Host/Editline.h
  include/lldb/Interpreter/CommandInterpreter.h
  include/lldb/Interpreter/CommandObject.h
  include/lldb/Utility/CompletionRequest.h
  packages/Python/lldbsuite/test/functionalities/completion/TestCompletion.py
  packages/Python/lldbsuite/test/lldbtest.py
  scripts/interface/SBCommandInterpreter.i
  source/API/SBCommandInterpreter.cpp
  source/Commands/CommandObjectMultiword.cpp
  source/Core/IOHandler.cpp
  source/Expression/REPL.cpp
  source/Host/common/Editline.cpp
  source/Interpreter/CommandInterpreter.cpp
  source/Utility/CompletionRequest.cpp
  unittests/Utility/CompletionRequestTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51175.162230.patch
Type: text/x-patch
Size: 44802 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20180823/1f4ebea8/attachment-0001.bin>


More information about the lldb-commits mailing list