Browse Source

Fixed spellcheck after return key.

merge-requests/365/head
eidheim 10 years ago
parent
commit
0c9b4bb68f
  1. 24
      src/source.cc
  2. 3
      src/source.h

24
src/source.cc

@ -106,10 +106,21 @@ Source::View::View(const boost::filesystem::path &file_path, Glib::RefPtr<Gsv::L
if(backward_success) {
if(last_keyval_is_backspace && !is_word_iter(iter) && iter.forward_char()) {} //backspace fix
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")) {
if(!is_word_iter(iter)) { //Might have used space or - to split two words
if(!is_word_iter(iter) || last_keyval_is_return) { //Might have used space or - to split two words
auto first=iter;
auto second=iter;
if(first.backward_char() && second.forward_char() && !second.starts_line()) {
if(last_keyval_is_return) {
while(first && !first.ends_line())
first.backward_char();
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 if(first.backward_char() && second.forward_char() && !second.starts_line()) {
get_buffer()->remove_tag_by_name("spellcheck_error", first, second);
auto word=spellcheck_get_word(first);
spellcheck_word(word.first, word.second);
@ -786,6 +797,10 @@ bool Source::View::on_key_press_event(GdkEventKey* key) {
last_keyval_is_backspace=true;
else
last_keyval_is_backspace=false;
if(key->keyval==GDK_KEY_Return)
last_keyval_is_return=true;
else
last_keyval_is_return=false;
get_source_buffer()->begin_user_action();
//Indent as in next or previous line
@ -1463,6 +1478,11 @@ bool Source::ClangViewParse::on_key_press_event(GdkEventKey* key) {
return true;
}
if(key->keyval==GDK_KEY_Return)
last_keyval_is_return=true;
else
last_keyval_is_return=false;
if(get_buffer()->get_has_selection()) {
return Source::View::on_key_press_event(key);
}

3
src/source.h

@ -119,6 +119,8 @@ namespace Source {
bool spellcheck_all=false;
std::unique_ptr<SelectionDialog> spellcheck_suggestions_dialog;
bool spellcheck_suggestions_dialog_shown=false;
bool last_keyval_is_backspace=false;
bool last_keyval_is_return=false;
private:
GtkSourceSearchContext *search_context;
GtkSourceSearchSettings *search_settings;
@ -133,7 +135,6 @@ namespace Source {
std::vector<std::string> spellcheck_get_suggestions(const Gtk::TextIter& start, const Gtk::TextIter& end);
sigc::connection delayed_spellcheck_suggestions_connection;
sigc::connection delayed_spellcheck_error_clear;
bool last_keyval_is_backspace=false;
};
class GenericView : public View {

Loading…
Cancel
Save