mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-22 07:35:08 +00:00
textDocument/documentSymbol: support unopened files (#548)
This commit is contained in:
parent
06a04d5102
commit
a2ecd9a8f0
@ -252,9 +252,9 @@ QueryFile *MessageHandler::findFile(const std::string &path, int *out_file_id) {
|
|||||||
|
|
||||||
std::pair<QueryFile *, WorkingFile *>
|
std::pair<QueryFile *, WorkingFile *>
|
||||||
MessageHandler::findOrFail(const std::string &path, ReplyOnce &reply,
|
MessageHandler::findOrFail(const std::string &path, ReplyOnce &reply,
|
||||||
int *out_file_id) {
|
int *out_file_id, bool allow_unopened) {
|
||||||
WorkingFile *wf = wfiles->getFile(path);
|
WorkingFile *wf = wfiles->getFile(path);
|
||||||
if (!wf) {
|
if (!wf && !allow_unopened) {
|
||||||
reply.notOpened(path);
|
reply.notOpened(path);
|
||||||
return {nullptr, nullptr};
|
return {nullptr, nullptr};
|
||||||
}
|
}
|
||||||
|
@ -236,7 +236,8 @@ struct MessageHandler {
|
|||||||
QueryFile *findFile(const std::string &path, int *out_file_id = nullptr);
|
QueryFile *findFile(const std::string &path, int *out_file_id = nullptr);
|
||||||
std::pair<QueryFile *, WorkingFile *> findOrFail(const std::string &path,
|
std::pair<QueryFile *, WorkingFile *> findOrFail(const std::string &path,
|
||||||
ReplyOnce &reply,
|
ReplyOnce &reply,
|
||||||
int *out_file_id = nullptr);
|
int *out_file_id = nullptr,
|
||||||
|
bool allow_unopened = false);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void bind(const char *method, void (MessageHandler::*handler)(JsonReader &));
|
void bind(const char *method, void (MessageHandler::*handler)(JsonReader &));
|
||||||
|
@ -147,8 +147,8 @@ void MessageHandler::textDocument_documentSymbol(JsonReader &reader,
|
|||||||
|
|
||||||
int file_id;
|
int file_id;
|
||||||
auto [file, wf] =
|
auto [file, wf] =
|
||||||
findOrFail(param.textDocument.uri.getPath(), reply, &file_id);
|
findOrFail(param.textDocument.uri.getPath(), reply, &file_id, true);
|
||||||
if (!wf)
|
if (!file)
|
||||||
return;
|
return;
|
||||||
auto allows = [&](SymbolRef sym) { return !(sym.role & param.excludeRole); };
|
auto allows = [&](SymbolRef sym) { return !(sym.role & param.excludeRole); };
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user