From 11d01f8fa171f764a697a8d0565e66a8d349ae6d Mon Sep 17 00:00:00 2001 From: eidheim Date: Mon, 9 Nov 2015 09:36:13 +0100 Subject: [PATCH] Starts reparse right away on buffer change if reparse has not been run before. This avoids several slow autocompletions if reparse has not been run before. --- src/source_clang.cc | 9 ++++++++- src/source_clang.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) 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;