Browse Source

Hopefully the last spellcheck fix.

merge-requests/365/head
eidheim 10 years ago
parent
commit
5420343e8d
  1. 37
      src/source.cc

37
src/source.cc

@ -186,24 +186,31 @@ Source::View::View(const boost::filesystem::path &file_path): file_path(file_pat
delayed_spellcheck_suggestions_connection.disconnect(); delayed_spellcheck_suggestions_connection.disconnect();
auto iter=get_buffer()->get_insert()->get_iter(); auto iter=get_buffer()->get_insert()->get_iter();
auto context_iter=iter; bool ends_line=iter.ends_line();
if(((last_keyval_is_backspace && !iter.ends_line()) || iter.backward_char()) && context_iter.backward_char() && context_iter.backward_char()) { if(iter.backward_char()) {
if((spellcheck_all && !get_source_buffer()->iter_has_context_class(context_iter, "no-spell-check")) || get_source_buffer()->iter_has_context_class(context_iter, "comment") || get_source_buffer()->iter_has_context_class(context_iter, "string")) { auto context_iter=iter;
if(*iter==32 || *iter==45) { //Might have used space or - to split two words bool backward_success=true;
auto first=iter; if(ends_line || *iter=='/' || *iter=='*') //iter_has_context_class is sadly bugged
auto second=iter; backward_success=context_iter.backward_char();
if(first.backward_char() && second.forward_char()) { if(backward_success) {
get_buffer()->remove_tag_by_name("spellcheck_error", first, second); if((spellcheck_all && !get_source_buffer()->iter_has_context_class(context_iter, "no-spell-check")) || get_source_buffer()->iter_has_context_class(context_iter, "comment") || get_source_buffer()->iter_has_context_class(context_iter, "string")) {
auto word=spellcheck_get_word(first); if(last_keyval_is_backspace && !is_word_iter(iter) && iter.forward_char()) {} //backspace fix
spellcheck_word(word.first, word.second); if(*iter==32 || *iter==45) { //Might have used space or - to split two words
word=spellcheck_get_word(second); auto first=iter;
auto second=iter;
if(first.backward_char() && second.forward_char()) {
get_buffer()->remove_tag_by_name("spellcheck_error", first, second);
auto word=spellcheck_get_word(first);
spellcheck_word(word.first, word.second);
word=spellcheck_get_word(second);
spellcheck_word(word.first, word.second);
}
}
else {
auto word=spellcheck_get_word(iter);
spellcheck_word(word.first, word.second); spellcheck_word(word.first, word.second);
} }
} }
else {
auto word=spellcheck_get_word(iter);
spellcheck_word(word.first, word.second);
}
} }
} }
}); });

Loading…
Cancel
Save