-
Notifications
You must be signed in to change notification settings - Fork 7
/
Index.proto
131 lines (113 loc) · 3.37 KB
/
Index.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//===--- 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;
}