Skip to content
This repository was archived by the owner on Jun 25, 2020. It is now read-only.

Commit acd71ec

Browse files
committed
Cleanup of similar symbol tags
1 parent 830a003 commit acd71ec

File tree

6 files changed

+9
-30
lines changed

6 files changed

+9
-30
lines changed

src/source.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@ Source::View::View(const boost::filesystem::path &file_path, const Glib::RefPtr<
132132
//TODO: (gtkmm's Gtk::Object has connect_property_changed, so subclassing this might be an idea)
133133
g_signal_connect(search_context, "notify::occurrences-count", G_CALLBACK(search_occurrences_updated), this);
134134

135+
similar_symbol_tag=get_buffer()->create_tag();
136+
similar_symbol_tag->property_weight()=Pango::WEIGHT_ULTRAHEAVY;
137+
135138
get_buffer()->create_tag("def:warning");
136139
get_buffer()->create_tag("def:warning_underline");
137140
get_buffer()->create_tag("def:error");
@@ -537,6 +540,7 @@ void Source::View::setup_tooltip_and_dialog_events() {
537540

538541
if(mark->get_name()=="insert") {
539542
hide_tooltips();
543+
delayed_tooltips_connection.disconnect();
540544
delayed_tooltips_connection=Glib::signal_timeout().connect([this]() {
541545
Tooltips::init();
542546
Gdk::Rectangle rectangle;
@@ -1157,7 +1161,6 @@ void Source::View::paste() {
11571161

11581162
void Source::View::hide_tooltips() {
11591163
delayed_tooltips_connection.disconnect();
1160-
delayed_tag_similar_symbols_connection.disconnect();
11611164
type_tooltips.hide();
11621165
diagnostic_tooltips.hide();
11631166
}

src/source.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ namespace Source {
103103
Tooltips diagnostic_tooltips;
104104
Tooltips type_tooltips;
105105
sigc::connection delayed_tooltips_connection;
106+
Glib::RefPtr<Gtk::TextTag> similar_symbol_tag;
106107
sigc::connection delayed_tag_similar_symbols_connection;
107108
virtual void show_diagnostic_tooltips(const Gdk::Rectangle &rectangle) { diagnostic_tooltips.show(rectangle); }
108109
void add_diagnostic_tooltip(const Gtk::TextIter &start, const Gtk::TextIter &end, std::string spelling, bool error);

src/source_clang.cc

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -818,17 +818,9 @@ const std::unordered_map<std::string, std::string> &Source::ClangViewAutocomplet
818818

819819
Source::ClangViewRefactor::ClangViewRefactor(const boost::filesystem::path &file_path, const Glib::RefPtr<Gsv::Language> &language) :
820820
BaseView(file_path, language), Source::ClangViewParse(file_path, language) {
821-
similar_identifiers_tag=get_buffer()->create_tag();
822-
similar_identifiers_tag->property_weight()=Pango::WEIGHT_ULTRAHEAVY;
823-
824821
get_buffer()->signal_changed().connect([this]() {
825822
if(last_tagged_identifier) {
826-
for(auto &mark: similar_identifiers_marks) {
827-
get_buffer()->remove_tag(similar_identifiers_tag, mark.first->get_iter(), mark.second->get_iter());
828-
get_buffer()->delete_mark(mark.first);
829-
get_buffer()->delete_mark(mark.second);
830-
}
831-
similar_identifiers_marks.clear();
823+
get_buffer()->remove_tag(similar_symbol_tag, get_buffer()->begin(), get_buffer()->end());
832824
last_tagged_identifier=Identifier();
833825
}
834826
});
@@ -1722,29 +1714,18 @@ void Source::ClangViewRefactor::wait_parsing() {
17221714
void Source::ClangViewRefactor::tag_similar_identifiers(const Identifier &identifier) {
17231715
if(parsed) {
17241716
if(identifier && last_tagged_identifier!=identifier) {
1725-
for(auto &mark: similar_identifiers_marks) {
1726-
get_buffer()->remove_tag(similar_identifiers_tag, mark.first->get_iter(), mark.second->get_iter());
1727-
get_buffer()->delete_mark(mark.first);
1728-
get_buffer()->delete_mark(mark.second);
1729-
}
1730-
similar_identifiers_marks.clear();
1717+
get_buffer()->remove_tag(similar_symbol_tag, get_buffer()->begin(), get_buffer()->end());
17311718
auto offsets=clang_tokens->get_similar_token_offsets(identifier.kind, identifier.spelling, identifier.cursor.get_all_usr_extended());
17321719
for(auto &offset: offsets) {
17331720
auto start_iter=get_buffer()->get_iter_at_line_index(offset.first.line-1, offset.first.index-1);
17341721
auto end_iter=get_buffer()->get_iter_at_line_index(offset.second.line-1, offset.second.index-1);
1735-
get_buffer()->apply_tag(similar_identifiers_tag, start_iter, end_iter);
1736-
similar_identifiers_marks.emplace_back(get_buffer()->create_mark(start_iter), get_buffer()->create_mark(end_iter));
1722+
get_buffer()->apply_tag(similar_symbol_tag, start_iter, end_iter);
17371723
}
17381724
last_tagged_identifier=identifier;
17391725
}
17401726
}
17411727
if(!identifier && last_tagged_identifier) {
1742-
for(auto &mark: similar_identifiers_marks) {
1743-
get_buffer()->remove_tag(similar_identifiers_tag, mark.first->get_iter(), mark.second->get_iter());
1744-
get_buffer()->delete_mark(mark.first);
1745-
get_buffer()->delete_mark(mark.second);
1746-
}
1747-
similar_identifiers_marks.clear();
1728+
get_buffer()->remove_tag(similar_symbol_tag, get_buffer()->begin(), get_buffer()->end());
17481729
last_tagged_identifier=Identifier();
17491730
}
17501731
}

src/source_clang.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,7 @@ namespace Source {
8989
Identifier get_identifier();
9090
void wait_parsing();
9191

92-
std::list<std::pair<Glib::RefPtr<Gtk::TextMark>, Glib::RefPtr<Gtk::TextMark> > > similar_identifiers_marks;
9392
void tag_similar_identifiers(const Identifier &identifier);
94-
Glib::RefPtr<Gtk::TextTag> similar_identifiers_tag;
9593
Identifier last_tagged_identifier;
9694
};
9795

src/source_language_protocol.cc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -323,9 +323,6 @@ Source::LanguageProtocolView::LanguageProtocolView(const boost::filesystem::path
323323
get_source_buffer()->set_language(language);
324324
get_source_buffer()->set_highlight_syntax(true);
325325

326-
similar_symbol_tag=get_buffer()->create_tag();
327-
similar_symbol_tag->property_weight()=Pango::WEIGHT_ULTRAHEAVY;
328-
329326
status_state="initializing...";
330327
if(update_status_state)
331328
update_status_state(this);

src/source_language_protocol.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ namespace Source {
113113
void escape_text(std::string &text);
114114
void unescape_text(std::string &text);
115115

116-
Glib::RefPtr<Gtk::TextTag> similar_symbol_tag;
117116
void tag_similar_symbols();
118117

119118
Offset get_declaration(const Gtk::TextIter &iter);

0 commit comments

Comments
 (0)