Browse Source

Fixed wrongful symbol count for languages like Python

merge-requests/365/head
eidheim 9 years ago
parent
commit
62e0c20e4a
  1. 6
      src/source.cc
  2. 18
      src/source_spellcheck.cc

6
src/source.cc

@ -1205,13 +1205,12 @@ long Source::View::symbol_count(Gtk::TextIter iter, unsigned int positive_char,
curly_count--; curly_count--;
else if(check_if_next_iter_is_code_iter) { else if(check_if_next_iter_is_code_iter) {
auto next_iter=iter; auto next_iter=iter;
if(next_iter.forward_char()) { next_iter.forward_char();
if(*iter==positive_char && is_code_iter(next_iter)) if(*iter==positive_char && is_code_iter(next_iter))
symbol_count++; symbol_count++;
else if(*iter==negative_char && is_code_iter(next_iter)) else if(*iter==negative_char && is_code_iter(next_iter))
symbol_count--; symbol_count--;
} }
}
if(break_on_curly && curly_count>0) if(break_on_curly && curly_count>0)
break; break;
@ -1234,13 +1233,12 @@ long Source::View::symbol_count(Gtk::TextIter iter, unsigned int positive_char,
curly_count--; curly_count--;
else if(check_if_next_iter_is_code_iter) { else if(check_if_next_iter_is_code_iter) {
auto next_iter=iter; auto next_iter=iter;
if(next_iter.forward_char()) { next_iter.forward_char();
if(*iter==positive_char && is_code_iter(next_iter)) if(*iter==positive_char && is_code_iter(next_iter))
symbol_count++; symbol_count++;
else if(*iter==negative_char && is_code_iter(next_iter)) else if(*iter==negative_char && is_code_iter(next_iter))
symbol_count--; symbol_count--;
} }
}
if(break_on_curly && curly_count<0) if(break_on_curly && curly_count<0)
break; break;

18
src/source_spellcheck.cc

@ -340,6 +340,24 @@ bool Source::SpellCheckView::is_code_iter(const Gtk::TextIter &iter) {
if(spellcheck_all) { 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))) 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; 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; return false;
} }
if(comment_tag) { if(comment_tag) {

Loading…
Cancel
Save