Browse Source

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.

merge-requests/365/head
U-olece-PC\olece 10 years ago
parent
commit
c43d579f5a
  1. 19
      src/cmake.cc
  2. 33
      src/source.cc
  3. 2
      src/sourcefile.cc

19
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<compile_commands_file.size()) {
std::string drive;
drive+=compile_commands_file[pos+3];
compile_commands_file.replace(pos, 4, "-I"+drive+":");
}
else
break;
}
juci::filesystem::write(compile_commands_path, compile_commands_file);
#endif
return true;
}
return false;
}

33
src/source.cc

@ -705,6 +705,39 @@ std::vector<std::string> 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;
}

2
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<Gtk::TextBuffer> buffer) {
std::ofstream output(path);
std::ofstream output(path, std::ofstream::binary);
if(output) {
auto start_iter=buffer->begin();
auto end_iter=start_iter;

Loading…
Cancel
Save