From c43d579f5adc7bd02d6491f0941535faac0238c2 Mon Sep 17 00:00:00 2001 From: "U-olece-PC\\olece" Date: Thu, 27 Aug 2015 10:05:46 +0200 Subject: [PATCH] Now will not add carriage returns unless gtk so decides (depending on file I guess), and fixed include problems for MSYS2's buggy libclang install. Mind the latter is a termporary fix. --- src/cmake.cc | 19 ++++++++++++++++++- src/source.cc | 33 +++++++++++++++++++++++++++++++++ src/sourcefile.cc | 2 +- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/cmake.cc b/src/cmake.cc index aab2338..521eefa 100644 --- a/src/cmake.cc +++ b/src/cmake.cc @@ -47,8 +47,25 @@ CMake::CMake(const boost::filesystem::path &path) { bool CMake::create_compile_commands(const boost::filesystem::path &path) { Singleton::terminal()->print("Creating "+path.string()+"/compile_commands.json\n"); //TODO: Windows... - if(Singleton::terminal()->execute(Singleton::Config::terminal()->cmake_command+" . -DCMAKE_EXPORT_COMPILE_COMMANDS=ON", path)==EXIT_SUCCESS) + if(Singleton::terminal()->execute(Singleton::Config::terminal()->cmake_command+" . -DCMAKE_EXPORT_COMPILE_COMMANDS=ON", path)==EXIT_SUCCESS) { +#ifdef _WIN32 //Temporary fix to MSYS2's libclang + auto compile_commands_path=path; + compile_commands_path+="/compile_commands.json"; + auto compile_commands_file=juci::filesystem::read(compile_commands_path); + size_t pos=0; + while((pos=compile_commands_file.find("-I/", pos))!=std::string::npos) { + if(pos+3 Source::ClangViewParse::get_compilation_commands() { } if(file_path.extension()==".h") //TODO: temporary fix for .h-files (parse as c++) arguments.emplace_back("-xc++"); +#ifdef _WIN32 //Temporary fix to MSYS2's libclang + arguments.emplace_back("-IC:/msys32/mingw32/lib/gcc/i686-w64-mingw32/5.2.0/include"); + arguments.emplace_back("-IC:/msys32/mingw32//include"); + arguments.emplace_back("-IC:/msys32/mingw32/lib/gcc/i686-w64-mingw32/5.2.0/include-fixed"); + arguments.emplace_back("-IC:/msys32/mingw32/i686-w64-mingw32/include"); + arguments.emplace_back("-IC:/msys32/mingw32/include/c++/5.2.0"); + arguments.emplace_back("-IC:/msys32/mingw32/include/c++/5.2.0/i686-w64-mingw32"); + arguments.emplace_back("-IC:/msys32/mingw32/include/c++/5.2.0/backward"); + + arguments.emplace_back("-IC:/msys32/mingw64/lib/gcc/i686-w64-mingw32/5.2.0/include"); + arguments.emplace_back("-IC:/msys32/mingw64//include"); + arguments.emplace_back("-IC:/msys32/mingw64/lib/gcc/i686-w64-mingw32/5.2.0/include-fixed"); + arguments.emplace_back("-IC:/msys32/mingw64/i686-w64-mingw32/include"); + arguments.emplace_back("-IC:/msys32/mingw64/include/c++/5.2.0"); + arguments.emplace_back("-IC:/msys32/mingw64/include/c++/5.2.0/i686-w64-mingw32"); + arguments.emplace_back("-IC:/msys32/mingw64/include/c++/5.2.0/backward"); + + arguments.emplace_back("-IC:/msys64/mingw32/lib/gcc/i686-w64-mingw32/5.2.0/include"); + arguments.emplace_back("-IC:/msys64/mingw32//include"); + arguments.emplace_back("-IC:/msys64/mingw32/lib/gcc/i686-w64-mingw32/5.2.0/include-fixed"); + arguments.emplace_back("-IC:/msys64/mingw32/i686-w64-mingw32/include"); + arguments.emplace_back("-IC:/msys64/mingw32/include/c++/5.2.0"); + arguments.emplace_back("-IC:/msys64/mingw32/include/c++/5.2.0/i686-w64-mingw32"); + arguments.emplace_back("-IC:/msys64/mingw32/include/c++/5.2.0/backward"); + + arguments.emplace_back("-IC:/msys64/mingw64/lib/gcc/i686-w64-mingw32/5.2.0/include"); + arguments.emplace_back("-IC:/msys64/mingw64//include"); + arguments.emplace_back("-IC:/msys64/mingw64/lib/gcc/i686-w64-mingw32/5.2.0/include-fixed"); + arguments.emplace_back("-IC:/msys64/mingw64/i686-w64-mingw32/include"); + arguments.emplace_back("-IC:/msys64/mingw64/include/c++/5.2.0"); + arguments.emplace_back("-IC:/msys64/mingw64/include/c++/5.2.0/i686-w64-mingw32"); + arguments.emplace_back("-IC:/msys64/mingw64/include/c++/5.2.0/backward"); +#endif return arguments; } diff --git a/src/sourcefile.cc b/src/sourcefile.cc index ae5780b..6039136 100644 --- a/src/sourcefile.cc +++ b/src/sourcefile.cc @@ -58,7 +58,7 @@ bool juci::filesystem::write(const std::string &path, const std::string &new_con } bool juci::filesystem::write(const std::string &path, Glib::RefPtr buffer) { - std::ofstream output(path); + std::ofstream output(path, std::ofstream::binary); if(output) { auto start_iter=buffer->begin(); auto end_iter=start_iter;