| //===--- 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; |
| } |
| |
| // 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; |
| optional uint32 origin = 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; |
| } |
| |
| 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; |
| } |