diff --git a/src/command_line.cc b/src/command_line.cc index a7221bc8..0d390440 100644 --- a/src/command_line.cc +++ b/src/command_line.cc @@ -1,33 +1,30 @@ +// TODO: cleanup includes +#include "compilation_database_loader.h" +#include "indexer.h" +#include "query.h" +#include "language_server_api.h" +#include "platform.h" +#include "test.h" +#include "timer.h" +#include "threaded_queue.h" +#include "typed_bidi_message_queue.h" + +#include +#include +#include + #include #include #include #include #include -#include -#include -#include - -// TODO: cleanup includes -#include "compilation_database_loader.h" -#include "indexer.h" -#include "query.h" -#include "language_server_api.h" -#include "test.h" -#include "timer.h" -#include "threaded_queue.h" -#include "typed_bidi_message_queue.h" - -// TODO: move to platform -#ifdef _WIN32 -#include -#include -#endif - +namespace { const char* kIpcLanguageClientName = "language_client"; const int kNumIndexers = 8 - 1; const int kQueueSizeBytes = 1024 * 1024 * 32; +} struct IndexTranslationUnitRequest { std::string path; @@ -910,22 +907,12 @@ void LanguageServerMain(std::string process_name) { } } -void PreMain() { - // We need to write to stdout in binary mode because in Windows, writing - // \n will implicitly write \r\n. Language server API will ignore a - // \r\r\n split request. -#ifdef _WIN32 - _setmode(_fileno(stdout), O_BINARY); - _setmode(_fileno(stdin), O_BINARY); -#endif -} - int main(int argc, char** argv) { bool loop = false; while (loop) std::this_thread::sleep_for(std::chrono::milliseconds(10)); - PreMain(); + PlatformInit(); RegisterMessageTypes(); // if (argc == 1) { diff --git a/src/platform.h b/src/platform.h index 7af19d0b..f9b336c1 100644 --- a/src/platform.h +++ b/src/platform.h @@ -23,4 +23,5 @@ std::unique_ptr CreatePlatformSharedMemory( const std::string& name, size_t size); +void PlatformInit(); std::string GetWorkingDirectory(); diff --git a/src/platform_linux.cc b/src/platform_linux.cc index 3b948741..efe0defc 100644 --- a/src/platform_linux.cc +++ b/src/platform_linux.cc @@ -118,6 +118,9 @@ std::unique_ptr CreatePlatformScopedMutexLock( static_cast(mutex)->sem_); } +void PlatformInit() { +} + std::unique_ptr CreatePlatformSharedMemory( const std::string& name, size_t size) { std::string name2 = "/" + name; diff --git a/src/platform_win.cc b/src/platform_win.cc index 53b2da3f..d6b1ae9d 100644 --- a/src/platform_win.cc +++ b/src/platform_win.cc @@ -1,12 +1,15 @@ #if defined(_WIN32) #include "platform.h" +#include "utils.h" + +#include +#include +#include + #include #include #include -#include - -#include "utils.h" namespace { @@ -108,6 +111,14 @@ std::unique_ptr CreatePlatformSharedMemory( return MakeUnique(name, size); } +void PlatformInit() { + // We need to write to stdout in binary mode because in Windows, writing + // \n will implicitly write \r\n. Language server API will ignore a + // \r\r\n split request. + _setmode(_fileno(stdout), O_BINARY); + _setmode(_fileno(stdin), O_BINARY); +} + // See http://stackoverflow.com/a/19535628 std::string GetWorkingDirectory() { char result[MAX_PATH];