Browse Source

Further snippet improvements

pipelines/235045657
eidheim 6 years ago
parent
commit
eacd326581
  1. 9
      src/source_base.cpp
  2. 21
      tests/source_test.cpp

9
src/source_base.cpp

@ -1140,7 +1140,7 @@ void Source::BaseView::insert_snippet(Gtk::TextIter iter, const std::string &sni
for(; i < snippet.size() && !(stop_at_curly_end && snippet[i] == '}');) {
if(snippet[i] == '\\') {
if(i + 1 < snippet.size() &&
(snippet[i + 1] == '$' || snippet[i + 1] == '`' || (stop_at_curly_end && snippet[i + 1] == '}'))) {
(snippet[i + 1] == '$' || snippet[i + 1] == '`' || snippet[i + 1] == '\\' || (stop_at_curly_end && snippet[i + 1] == '}'))) {
insert += snippet[i + 1];
i += 2;
}
@ -1261,6 +1261,11 @@ bool Source::BaseView::select_snippet_parameter() {
}
get_buffer()->remove_tag(snippet_parameter_tag, get_buffer()->begin(), get_buffer()->end());
for(auto &parameters : snippet_parameters_list) {
for(auto &parameter : parameters)
get_buffer()->apply_tag(snippet_parameter_tag, parameter.start->get_iter(), parameter.end->get_iter());
}
if(!snippet_parameters_list.empty()) {
auto snippet_parameters_it = snippet_parameters_list.begin();
bool first = true;
@ -1281,8 +1286,6 @@ bool Source::BaseView::select_snippet_parameter() {
extra_snippet_cursors.emplace_back(ExtraSnippetCursor{get_buffer()->create_mark(start, false), end.get_offset() - start.get_offset()});
extra_snippet_cursors.back().mark->set_visible(true);
get_buffer()->apply_tag(snippet_parameter_tag, start, end);
setup_extra_cursor_signals();
}
get_buffer()->delete_mark(snippet_parameter.start);

21
tests/source_test.cpp

@ -675,5 +675,26 @@ int main() {
g_assert(buffer->get_text() == "\\begin{te}\n \n\\end{te}");
g_assert(buffer->get_insert()->get_iter().get_offset() == 13);
}
{
buffer->set_text("");
view.insert_snippet(buffer->get_insert()->get_iter(), "\\$");
g_assert(buffer->get_text() == "$");
buffer->set_text("");
view.insert_snippet(buffer->get_insert()->get_iter(), "\\\\${0:test}");
g_assert(buffer->get_text() == "\\test");
buffer->set_text("");
view.insert_snippet(buffer->get_insert()->get_iter(), "te{s}t");
g_assert(buffer->get_text() == "te{s}t");
buffer->set_text("");
view.insert_snippet(buffer->get_insert()->get_iter(), "${0:te{s\\}t}");
g_assert(buffer->get_text() == "te{s}t");
buffer->set_text("");
view.insert_snippet(buffer->get_insert()->get_iter(), "\\test\\");
g_assert(buffer->get_text() == "\\test\\");
}
}
}

Loading…
Cancel
Save