//===--- Index.proto - Remote index Protocol Buffers definition -----------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// syntax = "proto2"; package clang.clangd.remote; // Common final result for streaming requests. message FinalResult { optional bool has_more = 1; } message LookupRequest { repeated string ids = 1; } // The response is a stream of symbol messages and the terminating message // indicating the end of stream. message LookupReply { oneof kind { Symbol stream_result = 1; FinalResult final_result = 2; } } message FuzzyFindRequest { optional string query = 1; repeated string scopes = 2; optional bool any_scope = 3; optional uint32 limit = 4; optional bool restricted_for_code_completion = 5; repeated string proximity_paths = 6; repeated string preferred_types = 7; } // The response is a stream of symbol messages, and one terminating has_more // message. message FuzzyFindReply { oneof kind { Symbol stream_result = 1; FinalResult final_result = 2; } } message RefsRequest { repeated string ids = 1; optional uint32 filter = 2; optional uint32 limit = 3; optional bool want_container = 4; } // The response is a stream of reference messages, and one terminating has_more // message. message RefsReply { oneof kind { Ref stream_result = 1; FinalResult final_result = 2; } } message Symbol { optional string id = 1; optional SymbolInfo info = 2; optional string name = 3; optional SymbolLocation definition = 4; optional string scope = 5; optional SymbolLocation canonical_declaration = 6; optional int32 references = 7; reserved 8; optional string signature = 9; optional string template_specialization_args = 10; optional string completion_snippet_suffix = 11; optional string documentation = 12; optional string return_type = 13; optional string type = 14; repeated HeaderWithReferences headers = 15; optional uint32 flags = 16; } message Ref { optional SymbolLocation location = 1; optional uint32 kind = 2; } message SymbolInfo { optional uint32 kind = 1; optional uint32 subkind = 2; optional uint32 language = 3; optional uint32 properties = 4; } message SymbolLocation { optional Position start = 1; optional Position end = 2; // clangd::SymbolLocation stores FileURI, but the protocol transmits a the // relative path. Because paths are different on the remote and local machines // they will be translated in the marshalling layer. optional string file_path = 3; } message Position { optional uint32 line = 1; optional uint32 column = 2; } message HeaderWithReferences { optional string header = 1; optional uint32 references = 2; optional uint32 supported_directives = 3; } message RelationsRequest { repeated string subjects = 1; optional uint32 predicate = 2; optional uint32 limit = 3; } // The response is a stream of reference messages, and one terminating has_more // message. message RelationsReply { oneof kind { Relation stream_result = 1; FinalResult final_result = 2; } } // This struct does not mirror clangd::Relation but rather the arguments of // SymbolIndex::relations callback. message Relation { optional string subject_id = 1; optional Symbol object = 2; }