diff --git a/src/notebook.cc b/src/notebook.cc index 146cc8e..3bc8f0e 100644 --- a/src/notebook.cc +++ b/src/notebook.cc @@ -55,7 +55,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!="") + if(directories.cmake && directories.cmake->project_path!="" && file_path.string().substr(0, directories.cmake->project_path.string().size())==directories.cmake->project_path.string()) project_path=directories.cmake->project_path; else { project_path=file_path.parent_path(); @@ -119,7 +119,7 @@ bool Notebook::save(int page) { //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>=directories.cmake->project_path && CMake::create_compile_commands(directories.cmake->project_path)) { + 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)) { directories.open_folder(); for(auto source_view: source_views) { if(auto source_clang_view=dynamic_cast(source_view)) { diff --git a/src/source.cc b/src/source.cc index 0a7dcf4..2cfdcfd 100644 --- a/src/source.cc +++ b/src/source.cc @@ -149,7 +149,7 @@ void Source::View::paste() { auto line=get_line_before_insert(); std::smatch sm; std::string prefix_tabs; - if(std::regex_match(line, sm, spaces_regex) && sm[2].str().size()==0) { + if(!get_buffer()->get_has_selection() && std::regex_match(line, sm, spaces_regex) && sm[2].str().size()==0) { prefix_tabs=sm[1].str(); Glib::ustring::size_type start_line=0;