From 4c2dff39efdeabf6d17744ba1913cde16eca0915 Mon Sep 17 00:00:00 2001 From: scturtle Date: Sun, 31 Dec 2017 11:18:33 +0800 Subject: [PATCH] Response "being indexed" instead of "not found". --- src/message_handler.cc | 17 ++++++++++++++--- src/message_handler.h | 3 ++- src/messages/cquery_base.cc | 4 ++-- src/messages/cquery_call_tree.cc | 4 ++-- src/messages/cquery_callers.cc | 4 ++-- src/messages/cquery_derived.cc | 4 ++-- src/messages/cquery_did_view.cc | 4 ++-- src/messages/cquery_freshen_index.cc | 2 +- src/messages/cquery_index_file.cc | 2 +- src/messages/cquery_type_hierarchy_tree.cc | 4 ++-- src/messages/cquery_vars.cc | 4 ++-- src/messages/cquery_wait.cc | 2 +- src/messages/exit.cc | 2 +- src/messages/initialize.cc | 2 +- src/messages/text_document_code_action.cc | 4 ++-- src/messages/text_document_code_lens.cc | 2 +- src/messages/text_document_definition.cc | 2 +- src/messages/text_document_did_change.cc | 2 +- src/messages/text_document_did_close.cc | 2 +- src/messages/text_document_did_open.cc | 2 +- src/messages/text_document_document_link.cc | 4 ++-- src/messages/text_document_document_symbol.cc | 4 ++-- src/messages/text_document_highlight.cc | 4 ++-- src/messages/text_document_hover.cc | 2 +- src/messages/text_document_references.cc | 4 ++-- src/messages/text_document_rename.cc | 4 ++-- 26 files changed, 53 insertions(+), 41 deletions(-) diff --git a/src/message_handler.cc b/src/message_handler.cc index f30687e4..72a556f6 100644 --- a/src/message_handler.cc +++ b/src/message_handler.cc @@ -19,6 +19,7 @@ MessageHandler::MessageHandler() { std::vector* MessageHandler::message_handlers = nullptr; bool FindFileOrFail(QueryDatabase* db, + const Project *project, optional id, const std::string& absolute_path, QueryFile** out_query_file, @@ -39,7 +40,12 @@ bool FindFileOrFail(QueryDatabase* db, if (out_file_id) *out_file_id = QueryFileId((size_t)-1); - LOG_S(INFO) << "Unable to find file \"" << absolute_path << "\""; + bool indexing = project->absolute_path_to_entry_index_.find(absolute_path) != + project->absolute_path_to_entry_index_.end(); + if (indexing) + LOG_S(INFO) << "\"" << absolute_path << "\" is being indexed."; + else + LOG_S(INFO) << "Unable to find file \"" << absolute_path << "\""; /* LOG_S(INFO) << "Files (size=" << db->usr_to_file.size() << "): " << StringJoinMap(db->usr_to_file, @@ -51,8 +57,13 @@ bool FindFileOrFail(QueryDatabase* db, if (id) { Out_Error out; out.id = *id; - out.error.code = lsErrorCodes::InternalError; - out.error.message = "Unable to find file " + absolute_path; + if (indexing) { + out.error.code = lsErrorCodes::ServerNotInitialized; + out.error.message = absolute_path + " is being indexed."; + } else { + out.error.code = lsErrorCodes::InternalError; + out.error.message = "Unable to find file " + absolute_path; + } QueueManager::WriteStdout(IpcId::Unknown, out); } diff --git a/src/message_handler.h b/src/message_handler.h index 70387118..14ecc745 100644 --- a/src/message_handler.h +++ b/src/message_handler.h @@ -3,6 +3,7 @@ #include "ipc.h" #include "language_server_api.h" #include "query.h" +#include "project.h" #include @@ -17,7 +18,6 @@ struct ImportManager; struct ImportPipelineStatus; struct IncludeComplete; struct MultiQueueWaiter; -struct Project; struct QueryDatabase; struct SemanticHighlightSymbolCache; struct TimestampManager; @@ -75,6 +75,7 @@ struct BaseMessageHandler : MessageHandler { }; bool FindFileOrFail(QueryDatabase* db, + const Project *project, optional id, const std::string& absolute_path, QueryFile** out_query_file, diff --git a/src/messages/cquery_base.cc b/src/messages/cquery_base.cc index 42cda8b9..5551c4d4 100644 --- a/src/messages/cquery_base.cc +++ b/src/messages/cquery_base.cc @@ -14,7 +14,7 @@ REGISTER_IPC_MESSAGE(Ipc_CqueryBase); struct CqueryBaseHandler : BaseMessageHandler { void Run(Ipc_CqueryBase* request) override { QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) { return; } @@ -44,4 +44,4 @@ struct CqueryBaseHandler : BaseMessageHandler { } }; REGISTER_MESSAGE_HANDLER(CqueryBaseHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/cquery_call_tree.cc b/src/messages/cquery_call_tree.cc index 13adcc06..a8266385 100644 --- a/src/messages/cquery_call_tree.cc +++ b/src/messages/cquery_call_tree.cc @@ -178,7 +178,7 @@ struct CqueryCallTreeInitialHandler : BaseMessageHandler { void Run(Ipc_CqueryCallTreeInitial* request) override { QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) { return; } @@ -217,4 +217,4 @@ struct CqueryCallTreeExpandHandler } }; REGISTER_MESSAGE_HANDLER(CqueryCallTreeExpandHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/cquery_callers.cc b/src/messages/cquery_callers.cc index 1f2f06a5..7b9243c7 100644 --- a/src/messages/cquery_callers.cc +++ b/src/messages/cquery_callers.cc @@ -14,7 +14,7 @@ REGISTER_IPC_MESSAGE(Ipc_CqueryCallers); struct CqueryCallersHandler : BaseMessageHandler { void Run(Ipc_CqueryCallers* request) override { QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) { return; } @@ -42,4 +42,4 @@ struct CqueryCallersHandler : BaseMessageHandler { } }; REGISTER_MESSAGE_HANDLER(CqueryCallersHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/cquery_derived.cc b/src/messages/cquery_derived.cc index 290c4e4e..097585ca 100644 --- a/src/messages/cquery_derived.cc +++ b/src/messages/cquery_derived.cc @@ -14,7 +14,7 @@ REGISTER_IPC_MESSAGE(Ipc_CqueryDerived); struct CqueryDerivedHandler : BaseMessageHandler { void Run(Ipc_CqueryDerived* request) override { QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) { return; } @@ -42,4 +42,4 @@ struct CqueryDerivedHandler : BaseMessageHandler { } }; REGISTER_MESSAGE_HANDLER(CqueryDerivedHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/cquery_did_view.cc b/src/messages/cquery_did_view.cc index 34a9fdcd..478daaa0 100644 --- a/src/messages/cquery_did_view.cc +++ b/src/messages/cquery_did_view.cc @@ -25,7 +25,7 @@ struct CqueryDidViewHandler if (!working_file) return; QueryFile* file = nullptr; - if (!FindFileOrFail(db, nullopt, path, &file)) + if (!FindFileOrFail(db, project, nullopt, path, &file)) return; clang_complete->NotifyView(path); @@ -36,4 +36,4 @@ struct CqueryDidViewHandler } }; REGISTER_MESSAGE_HANDLER(CqueryDidViewHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/cquery_freshen_index.cc b/src/messages/cquery_freshen_index.cc index a2054a0f..da903b18 100644 --- a/src/messages/cquery_freshen_index.cc +++ b/src/messages/cquery_freshen_index.cc @@ -61,4 +61,4 @@ struct CqueryFreshenIndexHandler : MessageHandler { } }; REGISTER_MESSAGE_HANDLER(CqueryFreshenIndexHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/cquery_index_file.cc b/src/messages/cquery_index_file.cc index ccfb7234..89c48fdc 100644 --- a/src/messages/cquery_index_file.cc +++ b/src/messages/cquery_index_file.cc @@ -33,4 +33,4 @@ struct CqueryIndexFileHandler : BaseMessageHandler { } }; REGISTER_MESSAGE_HANDLER(CqueryIndexFileHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/cquery_type_hierarchy_tree.cc b/src/messages/cquery_type_hierarchy_tree.cc index 28bd2e62..bcd5c73c 100644 --- a/src/messages/cquery_type_hierarchy_tree.cc +++ b/src/messages/cquery_type_hierarchy_tree.cc @@ -167,7 +167,7 @@ struct CqueryTypeHierarchyTreeHandler : BaseMessageHandler { void Run(Ipc_CqueryTypeHierarchyTree* request) override { QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) return; @@ -195,4 +195,4 @@ struct CqueryTypeHierarchyTreeHandler } }; REGISTER_MESSAGE_HANDLER(CqueryTypeHierarchyTreeHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/cquery_vars.cc b/src/messages/cquery_vars.cc index 47fdd5ef..92a727d5 100644 --- a/src/messages/cquery_vars.cc +++ b/src/messages/cquery_vars.cc @@ -14,7 +14,7 @@ REGISTER_IPC_MESSAGE(Ipc_CqueryVars); struct CqueryVarsHandler : BaseMessageHandler { void Run(Ipc_CqueryVars* request) override { QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) { return; } @@ -37,4 +37,4 @@ struct CqueryVarsHandler : BaseMessageHandler { } }; REGISTER_MESSAGE_HANDLER(CqueryVarsHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/cquery_wait.cc b/src/messages/cquery_wait.cc index 5211d1c4..aaf279e8 100644 --- a/src/messages/cquery_wait.cc +++ b/src/messages/cquery_wait.cc @@ -41,4 +41,4 @@ struct CqueryWaitHandler : MessageHandler { } }; REGISTER_MESSAGE_HANDLER(CqueryWaitHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/exit.cc b/src/messages/exit.cc index 603c8f2c..8bf37c77 100644 --- a/src/messages/exit.cc +++ b/src/messages/exit.cc @@ -18,4 +18,4 @@ struct ExitHandler : MessageHandler { } }; REGISTER_MESSAGE_HANDLER(ExitHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/initialize.cc b/src/messages/initialize.cc index 87d2b86a..fdb51729 100644 --- a/src/messages/initialize.cc +++ b/src/messages/initialize.cc @@ -209,4 +209,4 @@ struct InitializeHandler : BaseMessageHandler { } }; REGISTER_MESSAGE_HANDLER(InitializeHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/text_document_code_action.cc b/src/messages/text_document_code_action.cc index c38faf71..206020ba 100644 --- a/src/messages/text_document_code_action.cc +++ b/src/messages/text_document_code_action.cc @@ -312,7 +312,7 @@ struct TextDocumentCodeActionHandler QueryFileId file_id; QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file, &file_id)) { return; @@ -593,4 +593,4 @@ TEST_SUITE("FindIncludeLine") { REQUIRE(FindIncludeLine(lines, "#include ") == 7); } } -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/text_document_code_lens.cc b/src/messages/text_document_code_lens.cc index 60f2256b..f137b40f 100644 --- a/src/messages/text_document_code_lens.cc +++ b/src/messages/text_document_code_lens.cc @@ -131,7 +131,7 @@ struct TextDocumentCodeLensHandler clang_complete->NotifyView(path); QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) { return; } diff --git a/src/messages/text_document_definition.cc b/src/messages/text_document_definition.cc index 4bf83a4d..ec6e4817 100644 --- a/src/messages/text_document_definition.cc +++ b/src/messages/text_document_definition.cc @@ -52,7 +52,7 @@ struct TextDocumentDefinitionHandler void Run(Ipc_TextDocumentDefinition* request) override { QueryFileId file_id; QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file, &file_id)) { return; diff --git a/src/messages/text_document_did_change.cc b/src/messages/text_document_did_change.cc index b81e9c7a..0de72c35 100644 --- a/src/messages/text_document_did_change.cc +++ b/src/messages/text_document_did_change.cc @@ -23,4 +23,4 @@ struct TextDocumentDidChangeHandler } }; REGISTER_MESSAGE_HANDLER(TextDocumentDidChangeHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/text_document_did_close.cc b/src/messages/text_document_did_close.cc index 43d21144..fcafa4c6 100644 --- a/src/messages/text_document_did_close.cc +++ b/src/messages/text_document_did_close.cc @@ -32,4 +32,4 @@ struct TextDocumentDidCloseHandler } }; REGISTER_MESSAGE_HANDLER(TextDocumentDidCloseHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/text_document_did_open.cc b/src/messages/text_document_did_open.cc index c1ede582..6af0089e 100644 --- a/src/messages/text_document_did_open.cc +++ b/src/messages/text_document_did_open.cc @@ -43,7 +43,7 @@ struct TextDocumentDidOpenHandler working_file->SetIndexContent(working_file->buffer_content); QueryFile* file = nullptr; - FindFileOrFail(db, nullopt, path, &file); + FindFileOrFail(db, project, nullopt, path, &file); if (file && file->def) { EmitInactiveLines(working_file, file->def->inactive_regions); EmitSemanticHighlighting(db, semantic_cache, working_file, file); diff --git a/src/messages/text_document_document_link.cc b/src/messages/text_document_document_link.cc index f7248d8d..3a0db3a3 100644 --- a/src/messages/text_document_document_link.cc +++ b/src/messages/text_document_document_link.cc @@ -48,7 +48,7 @@ struct TextDocumentDocumentLinkHandler if (config->showDocumentLinksOnIncludes) { QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) { return; } @@ -86,4 +86,4 @@ struct TextDocumentDocumentLinkHandler } }; REGISTER_MESSAGE_HANDLER(TextDocumentDocumentLinkHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/text_document_document_symbol.cc b/src/messages/text_document_document_symbol.cc index 37507a39..c9d37fdd 100644 --- a/src/messages/text_document_document_symbol.cc +++ b/src/messages/text_document_document_symbol.cc @@ -32,7 +32,7 @@ struct TextDocumentDocumentSymbolHandler out.id = request->id; QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) { return; } @@ -54,4 +54,4 @@ struct TextDocumentDocumentSymbolHandler } }; REGISTER_MESSAGE_HANDLER(TextDocumentDocumentSymbolHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/text_document_highlight.cc b/src/messages/text_document_highlight.cc index d6ad3e81..f3f1f66a 100644 --- a/src/messages/text_document_highlight.cc +++ b/src/messages/text_document_highlight.cc @@ -25,7 +25,7 @@ struct TextDocumentDocumentHighlightHandler void Run(Ipc_TextDocumentDocumentHighlight* request) override { QueryFileId file_id; QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file, &file_id)) { return; @@ -63,4 +63,4 @@ struct TextDocumentDocumentHighlightHandler } }; REGISTER_MESSAGE_HANDLER(TextDocumentDocumentHighlightHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/text_document_hover.cc b/src/messages/text_document_hover.cc index 50ee1fd3..61e6dc7e 100644 --- a/src/messages/text_document_hover.cc +++ b/src/messages/text_document_hover.cc @@ -75,7 +75,7 @@ void Reflect(Writer& visitor, Out_TextDocumentHover& value) { struct TextDocumentHoverHandler : BaseMessageHandler { void Run(Ipc_TextDocumentHover* request) override { QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) { return; } diff --git a/src/messages/text_document_references.cc b/src/messages/text_document_references.cc index 8b55ebe3..86616ee7 100644 --- a/src/messages/text_document_references.cc +++ b/src/messages/text_document_references.cc @@ -42,7 +42,7 @@ struct TextDocumentReferencesHandler : BaseMessageHandler { void Run(Ipc_TextDocumentReferences* request) override { QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file)) { return; } @@ -80,4 +80,4 @@ struct TextDocumentReferencesHandler } }; REGISTER_MESSAGE_HANDLER(TextDocumentReferencesHandler); -} // namespace \ No newline at end of file +} // namespace diff --git a/src/messages/text_document_rename.cc b/src/messages/text_document_rename.cc index 392a9b09..8c62251d 100644 --- a/src/messages/text_document_rename.cc +++ b/src/messages/text_document_rename.cc @@ -84,7 +84,7 @@ struct TextDocumentRenameHandler : BaseMessageHandler { void Run(Ipc_TextDocumentRename* request) override { QueryFileId file_id; QueryFile* file; - if (!FindFileOrFail(db, request->id, + if (!FindFileOrFail(db, project, request->id, request->params.textDocument.uri.GetPath(), &file, &file_id)) { return; @@ -109,4 +109,4 @@ struct TextDocumentRenameHandler : BaseMessageHandler { } }; REGISTER_MESSAGE_HANDLER(TextDocumentRenameHandler); -} // namespace \ No newline at end of file +} // namespace