diff --git a/src/directories.cc b/src/directories.cc index 5a761a4..cbda763 100644 --- a/src/directories.cc +++ b/src/directories.cc @@ -160,7 +160,7 @@ void Directories::select(const boost::filesystem::path &path) { if(current_path=="") return; - if(path.string().substr(0, current_path.string().size())!=current_path.string()) + if(path.generic_string().substr(0, current_path.generic_string().size()+1)!=current_path.generic_string()+'/') return; std::list paths; diff --git a/src/juci.cc b/src/juci.cc index 67075d2..b4c6b67 100644 --- a/src/juci.cc +++ b/src/juci.cc @@ -25,9 +25,9 @@ int app::on_command_line(const Glib::RefPtr &cmd) { if(boost::filesystem::exists(p)) { p=boost::filesystem::canonical(p); if(boost::filesystem::is_regular_file(p)) - files.emplace_back(p.string()); + files.emplace_back(p); else if(boost::filesystem::is_directory(p)) - directories.emplace_back(p.string()); + directories.emplace_back(p); } else std::cerr << "Path " << p << " does not exist." << std::endl; @@ -49,16 +49,17 @@ void app::on_activate() { } else { std::string files_in_directory; - for(size_t c=0;cgeneric_string().substr(0, directory.generic_string().size()+1)==directory.generic_string()+'/') { + files_in_directory+=" "+it->string(); + it=files.erase(it); } + else + it++; } std::thread another_juci_app([this, directory, files_in_directory](){ - Singleton::terminal()->async_print("Executing: juci "+directory+files_in_directory); - Singleton::terminal()->execute("juci "+directory+files_in_directory, ""); //TODO: do not open pipes here, doing this after Juci compiles on Windows + Singleton::terminal()->async_print("Executing: juci "+directory.string()+files_in_directory); + Singleton::terminal()->execute("juci "+directory.string()+files_in_directory, ""); //TODO: do not open pipes here, doing this after Juci compiles on Windows }); another_juci_app.detach(); } diff --git a/src/juci.h b/src/juci.h index 0f9043b..551a352 100644 --- a/src/juci.h +++ b/src/juci.h @@ -3,6 +3,7 @@ #include "window.h" #include "logging.h" + class app : public Gtk::Application { public: app(); @@ -11,8 +12,8 @@ class app : public Gtk::Application { private: std::unique_ptr window; - std::vector directories; - std::vector files; + std::vector directories; + std::vector files; }; #endif // JUCI_JUCI_H_ diff --git a/src/notebook.cc b/src/notebook.cc index 40b9874..facb803 100644 --- a/src/notebook.cc +++ b/src/notebook.cc @@ -67,7 +67,7 @@ void Notebook::open(const boost::filesystem::path &file_path) { auto language=Source::guess_language(file_path); if(language && (language->get_id()=="chdr" || language->get_id()=="c" || language->get_id()=="cpp" || language->get_id()=="objc")) { boost::filesystem::path project_path; - if(directories.cmake && directories.cmake->project_path!="" && file_path.string().substr(0, directories.cmake->project_path.string().size())==directories.cmake->project_path.string()) + if(directories.cmake && directories.cmake->project_path!="" && file_path.generic_string().substr(0, directories.cmake->project_path.generic_string().size()+1)==directories.cmake->project_path.generic_string()+'/') project_path=directories.cmake->project_path; else { project_path=file_path.parent_path(); @@ -153,7 +153,7 @@ bool Notebook::save(int page, bool reparse_needed) { //If CMakeLists.txt have been modified: //TODO: recreate cmake even without directories open? if(view->file_path.filename()=="CMakeLists.txt") { - if(directories.cmake && directories.cmake->project_path!="" && view->file_path.string().substr(0, directories.cmake->project_path.string().size())==directories.cmake->project_path.string() && CMake::create_compile_commands(directories.cmake->project_path)) { + if(directories.cmake && directories.cmake->project_path!="" && view->file_path.generic_string().substr(0, directories.cmake->project_path.generic_string().size()+1)==directories.cmake->project_path.generic_string()+'/' && CMake::create_compile_commands(directories.cmake->project_path)) { for(auto source_view: source_views) { if(auto source_clang_view=dynamic_cast(source_view)) { if(directories.cmake->project_path.string()==source_clang_view->project_path) {