diff --git a/src/source.cc b/src/source.cc index 960b5d9..0c9a384 100644 --- a/src/source.cc +++ b/src/source.cc @@ -1205,12 +1205,11 @@ long Source::View::symbol_count(Gtk::TextIter iter, unsigned int positive_char, curly_count--; else if(check_if_next_iter_is_code_iter) { auto next_iter=iter; - if(next_iter.forward_char()) { - if(*iter==positive_char && is_code_iter(next_iter)) - symbol_count++; - else if(*iter==negative_char && is_code_iter(next_iter)) - symbol_count--; - } + next_iter.forward_char(); + if(*iter==positive_char && is_code_iter(next_iter)) + symbol_count++; + else if(*iter==negative_char && is_code_iter(next_iter)) + symbol_count--; } if(break_on_curly && curly_count>0) @@ -1234,12 +1233,11 @@ long Source::View::symbol_count(Gtk::TextIter iter, unsigned int positive_char, curly_count--; else if(check_if_next_iter_is_code_iter) { auto next_iter=iter; - if(next_iter.forward_char()) { - if(*iter==positive_char && is_code_iter(next_iter)) - symbol_count++; - else if(*iter==negative_char && is_code_iter(next_iter)) - symbol_count--; - } + next_iter.forward_char(); + if(*iter==positive_char && is_code_iter(next_iter)) + symbol_count++; + else if(*iter==negative_char && is_code_iter(next_iter)) + symbol_count--; } if(break_on_curly && curly_count<0) diff --git a/src/source_spellcheck.cc b/src/source_spellcheck.cc index f797bd3..619ce82 100644 --- a/src/source_spellcheck.cc +++ b/src/source_spellcheck.cc @@ -340,6 +340,24 @@ bool Source::SpellCheckView::is_code_iter(const Gtk::TextIter &iter) { if(spellcheck_all) { if(no_spell_check_tag && (iter.has_tag(no_spell_check_tag) || iter.begins_tag(no_spell_check_tag) || iter.ends_tag(no_spell_check_tag))) return true; + // workaround for gtksourceview bug + if(iter.ends_line()) { + auto previous_iter=iter; + if(previous_iter.backward_char()) { + if(*previous_iter=='\'' || *previous_iter=='"') { + auto next_iter=iter; + next_iter.forward_char(); + if(next_iter.begins_tag(no_spell_check_tag) || next_iter.is_end()) + return true; + } + } + } + // for example, mark first " as code iter in this case: r"" + if(*iter=='\'' || *iter=='"') { + auto previous_iter=iter; + if(previous_iter.backward_char() && previous_iter.ends_tag(no_spell_check_tag)) + return true; + } return false; } if(comment_tag) {