42 lines · c
1//===--- SemanticSelection.h -------------------------------------*- C++-*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// Features for giving interesting semantic ranges around the cursor.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_SEMANTICSELECTION_H14#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_SEMANTICSELECTION_H15#include "ParsedAST.h"16#include "Protocol.h"17#include "llvm/Support/Error.h"18#include <string>19#include <vector>20namespace clang {21namespace clangd {22 23/// Returns the list of all interesting ranges around the Position \p Pos.24/// The interesting ranges corresponds to the AST nodes in the SelectionTree25/// containing \p Pos.26/// If pos is not in any interesting range, return [Pos, Pos).27llvm::Expected<SelectionRange> getSemanticRanges(ParsedAST &AST, Position Pos);28 29/// Returns a list of ranges whose contents might be collapsible in an editor.30/// This should include large scopes, preprocessor blocks etc.31llvm::Expected<std::vector<FoldingRange>> getFoldingRanges(ParsedAST &AST);32 33/// Returns a list of ranges whose contents might be collapsible in an editor.34/// This version uses the pseudoparser which does not require the AST.35llvm::Expected<std::vector<FoldingRange>>36getFoldingRanges(const std::string &Code, bool LineFoldingOnly);37 38} // namespace clangd39} // namespace clang40 41#endif // LLVM_CLANG_TOOLS_EXTRA_CLANGD_SEMANTICSELECTION_H42