//===--- CodeCompletionStrings.h ---------------------------------*- C++-*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===---------------------------------------------------------------------===// // // Functions for retrieving code completion information from // `CodeCompletionString`. // //===---------------------------------------------------------------------===// #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_CODECOMPLETIONSTRINGS_H #define LLVM_CLANG_TOOLS_EXTRA_CLANGD_CODECOMPLETIONSTRINGS_H #include "clang/Sema/CodeCompleteConsumer.h" namespace clang { class ASTContext; namespace clangd { /// Gets a minimally formatted documentation comment of \p Result, with comment /// markers stripped. See clang::RawComment::getFormattedText() for the detailed /// explanation of how the comment text is transformed. /// Returns empty string when no comment is available. /// If \p CommentsFromHeaders parameter is set, only comments from the main /// file will be returned. It is used to workaround crashes when parsing /// comments in the stale headers, coming from completion preamble. std::string getDocComment(const ASTContext &Ctx, const CodeCompletionResult &Result, bool CommentsFromHeaders); /// Gets a minimally formatted documentation for parameter of \p Result, /// corresponding to argument number \p ArgIndex. /// This currently looks for comments attached to the parameter itself, and /// doesn't extract them from function documentation. /// Returns empty string when no comment is available. /// If \p CommentsFromHeaders parameter is set, only comments from the main /// file will be returned. It is used to workaround crashes when parsing /// comments in the stale headers, coming from completion preamble. std::string getParameterDocComment(const ASTContext &Ctx, const CodeCompleteConsumer::OverloadCandidate &Result, unsigned ArgIndex, bool CommentsFromHeaders); /// Formats the signature for an item, as a display string and snippet. /// e.g. for const_reference std::vector::at(size_type) const, this returns: /// *Signature = "(size_type) const" /// *Snippet = "(${0:size_type})" /// If set, RequiredQualifiers is the text that must be typed before the name. /// e.g "Base::" when calling a base class member function that's hidden. void getSignature(const CodeCompletionString &CCS, std::string *Signature, std::string *Snippet, std::string *RequiredQualifiers = nullptr); /// Assembles formatted documentation for a completion result. This includes /// documentation comments and other relevant information like annotations. /// /// \param DocComment is a documentation comment for the original declaration, /// it should be obtained via getDocComment or getParameterDocComment. std::string formatDocumentation(const CodeCompletionString &CCS, llvm::StringRef DocComment); /// Gets detail to be used as the detail field in an LSP completion item. This /// is usually the return type of a function. std::string getReturnType(const CodeCompletionString &CCS); } // namespace clangd } // namespace clang #endif