Index.proto
3.35 KB
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
132
133
134
135
136
137
138
139
140
//===--- 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 = "proto3";
package clang.clangd.remote;
// Semantics of SymbolIndex match clangd::SymbolIndex with all required
// structures corresponding to their clangd::* counterparts.
service SymbolIndex {
rpc Lookup(LookupRequest) returns (stream LookupReply) {}
rpc FuzzyFind(FuzzyFindRequest) returns (stream FuzzyFindReply) {}
rpc Refs(RefsRequest) returns (stream RefsReply) {}
rpc Relations(RelationsRequest) returns (stream RelationsReply) {}
}
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;
bool final_result = 2;
}
}
message FuzzyFindRequest {
string query = 1;
repeated string scopes = 2;
bool any_scope = 3;
uint32 limit = 4;
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;
bool final_result = 2; // HasMore
}
}
message RefsRequest {
repeated string ids = 1;
uint32 filter = 2;
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;
bool final_result = 2; // HasMore
}
}
message Symbol {
string id = 1;
SymbolInfo info = 2;
string name = 3;
SymbolLocation definition = 4;
string scope = 5;
SymbolLocation canonical_declaration = 6;
int32 references = 7;
uint32 origin = 8;
string signature = 9;
string template_specialization_args = 10;
string completion_snippet_suffix = 11;
string documentation = 12;
string return_type = 13;
string type = 14;
repeated HeaderWithReferences headers = 15;
uint32 flags = 16;
}
message Ref {
SymbolLocation location = 1;
uint32 kind = 2;
}
message SymbolInfo {
uint32 kind = 1;
uint32 subkind = 2;
uint32 language = 3;
uint32 properties = 4;
}
message SymbolLocation {
Position start = 1;
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.
string file_path = 3;
}
message Position {
uint32 line = 1;
uint32 column = 2;
}
message HeaderWithReferences {
string header = 1;
uint32 references = 2;
}
message RelationsRequest {
repeated string subjects = 1;
uint32 predicate = 2;
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;
bool final_result = 2; // HasMore
}
}
// This struct does not mirror clangd::Relation but rather the arguments of
// SymbolIndex::relations callback.
message Relation {
string subject_id = 1;
Symbol object = 2;
}