Browse Source

Cleanup of SourceBase::SnippetParameter class

pipelines/235045657
eidheim 6 years ago
parent
commit
beb9596db2
  1. 12
      src/source_base.cpp
  2. 11
      src/source_base.hpp

12
src/source_base.cpp

@ -1542,7 +1542,7 @@ void Source::BaseView::insert_snippet(Gtk::TextIter iter, const std::string &sni
start.forward_chars(offsets.first); start.forward_chars(offsets.first);
auto end = start; auto end = start;
end.forward_chars(offsets.second); end.forward_chars(offsets.second);
snippet_parameters_list.back().emplace_back(SnippetParameter{get_buffer()->create_mark(start, false), get_buffer()->create_mark(end, false), end.get_offset() - start.get_offset()}); snippet_parameters_list.back().emplace_back(start, end);
} }
} }
@ -1599,8 +1599,6 @@ bool Source::BaseView::select_snippet_parameter() {
setup_extra_cursor_signals(); setup_extra_cursor_signals();
} }
get_buffer()->delete_mark(snippet_parameter.start);
get_buffer()->delete_mark(snippet_parameter.end);
} }
snippet_parameters_list.erase(snippet_parameters_it); snippet_parameters_list.erase(snippet_parameters_it);
return true; return true;
@ -1612,12 +1610,6 @@ bool Source::BaseView::clear_snippet_marks() {
bool cleared = false; bool cleared = false;
if(!snippet_parameters_list.empty()) { if(!snippet_parameters_list.empty()) {
for(auto &snippet_parameters : snippet_parameters_list) {
for(auto &snippet_parameter : snippet_parameters) {
get_buffer()->delete_mark(snippet_parameter.start);
get_buffer()->delete_mark(snippet_parameter.end);
}
}
snippet_parameters_list.clear(); snippet_parameters_list.clear();
cleared = true; cleared = true;
} }
@ -1640,7 +1632,7 @@ bool Source::BaseView::clear_snippet_marks() {
Source::BaseView::ExtraCursor::ExtraCursor(const Glib::RefPtr<Gtk::TextTag> &extra_cursor_selection, const Gtk::TextIter &start_iter, const Gtk::TextIter &end_iter, bool snippet, int line_offset) Source::BaseView::ExtraCursor::ExtraCursor(const Glib::RefPtr<Gtk::TextTag> &extra_cursor_selection, const Gtk::TextIter &start_iter, const Gtk::TextIter &end_iter, bool snippet, int line_offset)
: extra_cursor_selection(extra_cursor_selection), : extra_cursor_selection(extra_cursor_selection),
insert(start_iter.get_buffer()->create_mark(start_iter, false)), insert(start_iter.get_buffer()->create_mark(start_iter, false)),
selection_bound(start_iter.get_buffer()->create_mark(end_iter, false)), selection_bound(end_iter.get_buffer()->create_mark(end_iter, false)),
line_offset(line_offset), snippet(snippet) { line_offset(line_offset), snippet(snippet) {
insert->set_visible(true); insert->set_visible(true);
if(start_iter != end_iter) if(start_iter != end_iter)

11
src/source_base.hpp

@ -178,12 +178,19 @@ namespace Source {
bool keep_snippet_marks = false; bool keep_snippet_marks = false;
Mutex snippets_mutex; Mutex snippets_mutex;
std::vector<Snippets::Snippet> *snippets GUARDED_BY(snippets_mutex) = nullptr; std::vector<Snippets::Snippet> *snippets GUARDED_BY(snippets_mutex) = nullptr;
struct SnippetParameter { class SnippetParameter {
public:
SnippetParameter(const Gtk::TextIter &start_iter, const Gtk::TextIter &end_iter)
: start(start_iter.get_buffer()->create_mark(start_iter, false)), end(end_iter.get_buffer()->create_mark(end_iter, false)), size(end_iter.get_offset() - start_iter.get_offset()) {}
~SnippetParameter() {
start->get_buffer()->delete_mark(start);
end->get_buffer()->delete_mark(end);
}
Glib::RefPtr<Gtk::TextBuffer::Mark> start, end; Glib::RefPtr<Gtk::TextBuffer::Mark> start, end;
/// Used to check if the parameter has been deleted, and should be passed on next tab /// Used to check if the parameter has been deleted, and should be passed on next tab
int size; int size;
}; };
std::list<std::vector<SnippetParameter>> snippet_parameters_list; std::list<std::list<SnippetParameter>> snippet_parameters_list;
Glib::RefPtr<Gtk::TextTag> snippet_parameter_tag; Glib::RefPtr<Gtk::TextTag> snippet_parameter_tag;
void insert_snippet(Gtk::TextIter iter, const std::string &snippet); void insert_snippet(Gtk::TextIter iter, const std::string &snippet);
bool select_snippet_parameter(); bool select_snippet_parameter();

Loading…
Cancel
Save