From 842314171c49e34e6acc83d27ff2644a91fc7886 Mon Sep 17 00:00:00 2001 From: eidheim Date: Sat, 29 Aug 2015 12:53:01 +0200 Subject: [PATCH] Spellcheck should now work on all supported file types at the correct positions. --- src/source.cc | 13 +++++++------ src/source.h | 3 +++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/source.cc b/src/source.cc index 860c593..278ed57 100644 --- a/src/source.cc +++ b/src/source.cc @@ -15,8 +15,6 @@ namespace sigc { SIGC_FUNCTORS_DEDUCE_RESULT_TYPE_WITH_DECLTYPE } -AspellConfig* spellcheck_config=NULL; - Glib::RefPtr Source::guess_language(const boost::filesystem::path &file_path) { auto language_manager=Gsv::LanguageManager::get_default(); bool result_uncertain = false; @@ -38,6 +36,8 @@ Glib::RefPtr Source::guess_language(const boost::filesystem::path ////////////// //// View //// ////////////// +AspellConfig* Source::View::spellcheck_config=NULL; + Source::View::View(const boost::filesystem::path &file_path): file_path(file_path) { set_smart_home_end(Gsv::SMART_HOME_END_BEFORE); get_source_buffer()->begin_not_undoable_action(); @@ -174,8 +174,8 @@ Source::View::View(const boost::filesystem::path &file_path): file_path(file_pat if(iter.backward_char()) { auto context_iter=iter; if(context_iter.backward_char()) { - if(get_source_buffer()->iter_has_context_class(context_iter, "comment") || get_source_buffer()->iter_has_context_class(context_iter, "string")) { - if(*iter==32) { //Might have used space to split two words + 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(*iter==32 || *iter==45) { //Might have used space or - to split two words auto first=iter; auto second=iter; if(first.backward_char() && second.forward_char()) { @@ -638,12 +638,12 @@ void Source::View::spellcheck(Gtk::TextIter iter) { auto start=iter; auto end=iter; - while((*iter>=48 && *iter<=57) || (*iter>=65 && *iter<=90) || (*iter>=97 && *iter<=122) || *iter>=128) { + while((*iter>=48 && *iter<=57) || (*iter>=65 && *iter<=90) || (*iter>=97 && *iter<=122) || *iter==39 || *iter>=128) { start=iter; if(!iter.backward_char()) break; } - while((*end>=48 && *end<=57) || (*end>=65 && *end<=90) || (*end>=97 && *end<=122) || *end>=128) { + while((*end>=48 && *end<=57) || (*end>=65 && *end<=90) || (*end>=97 && *end<=122) || *iter==39 || *end>=128) { if(!end.forward_char()) break; } @@ -696,6 +696,7 @@ Source::GenericView::GenericView(const boost::filesystem::path &file_path, Glib: get_source_buffer()->set_language(language); Singleton::terminal()->print("Language for file "+file_path.string()+" set to "+language->get_name()+".\n"); } + spellcheck_all=true; auto completion=get_completion(); auto completion_words=Gsv::CompletionWords::create("", Glib::RefPtr()); completion_words->register_provider(get_buffer()); diff --git a/src/source.h b/src/source.h index 8df142e..025b06d 100644 --- a/src/source.h +++ b/src/source.h @@ -98,11 +98,14 @@ namespace Source { char tab_char; std::string tab; std::regex tabs_regex; + + bool spellcheck_all=false; private: GtkSourceSearchContext *search_context; GtkSourceSearchSettings *search_settings; static void search_occurrences_updated(GtkWidget* widget, GParamSpec* property, gpointer data); + static AspellConfig* spellcheck_config; AspellCanHaveError *spellcheck_possible_err; AspellSpeller *spellcheck_checker; void spellcheck(Gtk::TextIter iter);