2018-03-02 02:06:48 +00:00
|
|
|
#include "cache_manager.h"
|
2018-03-20 12:33:02 +00:00
|
|
|
#include "clang_complete.h"
|
2018-03-02 02:06:48 +00:00
|
|
|
#include "message_handler.h"
|
|
|
|
#include "project.h"
|
|
|
|
#include "queue_manager.h"
|
2018-03-11 22:12:26 +00:00
|
|
|
#include "timer.h"
|
2018-03-02 02:06:48 +00:00
|
|
|
#include "working_files.h"
|
|
|
|
|
2018-03-20 12:33:02 +00:00
|
|
|
#include <loguru.hpp>
|
|
|
|
|
2018-03-02 02:06:48 +00:00
|
|
|
namespace {
|
|
|
|
struct lsDidChangeConfigurationParams {
|
|
|
|
bool placeholder;
|
|
|
|
};
|
|
|
|
MAKE_REFLECT_STRUCT(lsDidChangeConfigurationParams, placeholder);
|
|
|
|
|
|
|
|
struct Ipc_WorkspaceDidChangeConfiguration
|
|
|
|
: public NotificationMessage<Ipc_WorkspaceDidChangeConfiguration> {
|
|
|
|
const static IpcId kIpcId = IpcId::WorkspaceDidChangeConfiguration;
|
|
|
|
lsDidChangeConfigurationParams params;
|
|
|
|
};
|
|
|
|
MAKE_REFLECT_STRUCT(Ipc_WorkspaceDidChangeConfiguration, params);
|
|
|
|
REGISTER_IPC_MESSAGE(Ipc_WorkspaceDidChangeConfiguration);
|
|
|
|
|
|
|
|
struct WorkspaceDidChangeConfigurationHandler
|
|
|
|
: BaseMessageHandler<Ipc_WorkspaceDidChangeConfiguration> {
|
|
|
|
void Run(Ipc_WorkspaceDidChangeConfiguration* request) override {
|
2018-03-11 22:12:26 +00:00
|
|
|
Timer time;
|
|
|
|
project->Load(config, config->projectRoot);
|
|
|
|
time.ResetAndPrint("[perf] Loaded compilation entries (" +
|
2018-03-20 02:51:42 +00:00
|
|
|
std::to_string(project->entries.size()) + " files)");
|
2018-03-11 22:12:26 +00:00
|
|
|
|
|
|
|
time.Reset();
|
|
|
|
project->Index(config, QueueManager::instance(), working_files,
|
2018-03-20 02:51:42 +00:00
|
|
|
std::monostate());
|
2018-03-11 22:12:26 +00:00
|
|
|
time.ResetAndPrint(
|
|
|
|
"[perf] Dispatched workspace/didChangeConfiguration index requests");
|
2018-03-20 12:33:02 +00:00
|
|
|
|
|
|
|
clang_complete->FlushAllSessions();
|
|
|
|
LOG_S(INFO) << "Flushed all clang complete sessions";
|
2018-03-02 02:06:48 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
REGISTER_MESSAGE_HANDLER(WorkspaceDidChangeConfigurationHandler);
|
|
|
|
} // namespace
|