|
|
|
@ -568,6 +568,12 @@ void Source::ClangViewParse::show_type_tooltips(const Gdk::Rectangle &rectangle) |
|
|
|
|
|
|
|
|
|
|
|
Source::ClangViewAutocomplete::ClangViewAutocomplete(const boost::filesystem::path &file_path, Glib::RefPtr<Gsv::Language> language): |
|
|
|
Source::ClangViewAutocomplete::ClangViewAutocomplete(const boost::filesystem::path &file_path, Glib::RefPtr<Gsv::Language> language): |
|
|
|
Source::ClangViewParse(file_path, language), autocomplete_state(AutocompleteState::IDLE) { |
|
|
|
Source::ClangViewParse(file_path, language), autocomplete_state(AutocompleteState::IDLE) { |
|
|
|
|
|
|
|
non_interactive_completion=[this] { |
|
|
|
|
|
|
|
if(CompletionDialog::get() && CompletionDialog::get()->is_visible()) |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
autocomplete_check(); |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
get_buffer()->signal_changed().connect([this](){ |
|
|
|
get_buffer()->signal_changed().connect([this](){ |
|
|
|
if(CompletionDialog::get() && CompletionDialog::get()->is_visible()) |
|
|
|
if(CompletionDialog::get() && CompletionDialog::get()->is_visible()) |
|
|
|
delayed_reparse_connection.disconnect(); |
|
|
|
delayed_reparse_connection.disconnect(); |
|
|
|
@ -577,6 +583,7 @@ Source::ClangViewAutocomplete::ClangViewAutocomplete(const boost::filesystem::pa |
|
|
|
if((last_keyval>='0' && last_keyval<='9') || |
|
|
|
if((last_keyval>='0' && last_keyval<='9') || |
|
|
|
(last_keyval>='a' && last_keyval<='z') || (last_keyval>='A' && last_keyval<='Z') || |
|
|
|
(last_keyval>='a' && last_keyval<='z') || (last_keyval>='A' && last_keyval<='Z') || |
|
|
|
last_keyval=='_') { |
|
|
|
last_keyval=='_') { |
|
|
|
|
|
|
|
if(interactive_completion || autocomplete_state!=AutocompleteState::IDLE) |
|
|
|
autocomplete_check(); |
|
|
|
autocomplete_check(); |
|
|
|
} |
|
|
|
} |
|
|
|
else { |
|
|
|
else { |
|
|
|
@ -584,10 +591,12 @@ Source::ClangViewAutocomplete::ClangViewAutocomplete(const boost::filesystem::pa |
|
|
|
autocomplete_state=AutocompleteState::CANCELED; |
|
|
|
autocomplete_state=AutocompleteState::CANCELED; |
|
|
|
auto iter=get_buffer()->get_insert()->get_iter(); |
|
|
|
auto iter=get_buffer()->get_insert()->get_iter(); |
|
|
|
iter.backward_chars(2); |
|
|
|
iter.backward_chars(2); |
|
|
|
if(last_keyval=='.' || (last_keyval==':' && *iter==':') || (last_keyval=='>' && *iter=='-')) |
|
|
|
if(last_keyval=='.' || (last_keyval==':' && *iter==':') || (last_keyval=='>' && *iter=='-')) { |
|
|
|
|
|
|
|
if(interactive_completion) |
|
|
|
autocomplete_check(); |
|
|
|
autocomplete_check(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
get_buffer()->signal_mark_set().connect([this](const Gtk::TextBuffer::iterator& iterator, const Glib::RefPtr<Gtk::TextBuffer::Mark>& mark){ |
|
|
|
get_buffer()->signal_mark_set().connect([this](const Gtk::TextBuffer::iterator& iterator, const Glib::RefPtr<Gtk::TextBuffer::Mark>& mark){ |
|
|
|
if(mark->get_name()=="insert") { |
|
|
|
if(mark->get_name()=="insert") { |
|
|
|
|