diff --git a/src/source_clang.cc b/src/source_clang.cc index fdaef3d..3bf267d 100644 --- a/src/source_clang.cc +++ b/src/source_clang.cc @@ -159,13 +159,20 @@ std::map Source::ClangViewParse::get_buffer_map() cons void Source::ClangViewParse::start_reparse() { parse_thread_mapped=false; source_readable=false; + int delay; + if(!is_reparsed) { + delay=0; + is_reparsed=true; + } + else + delay=1000; delayed_reparse_connection.disconnect(); delayed_reparse_connection=Glib::signal_timeout().connect([this]() { source_readable=false; parse_thread_go=true; set_status("parsing..."); return false; - }, 1000); + }, delay); } std::vector Source::ClangViewParse::get_compilation_commands() { diff --git a/src/source_clang.h b/src/source_clang.h index 20c8214..36470f0 100644 --- a/src/source_clang.h +++ b/src/source_clang.h @@ -61,6 +61,7 @@ namespace Source { static clang::Index clang_index; std::vector get_compilation_commands(); + bool is_reparsed=false; Glib::Dispatcher parse_done; Glib::Dispatcher parse_start; Glib::Dispatcher parse_fail;