Browse Source

Spellcheck should now work on all supported file types at the correct positions.

merge-requests/365/head
eidheim 10 years ago
parent
commit
842314171c
  1. 13
      src/source.cc
  2. 3
      src/source.h

13
src/source.cc

@ -15,8 +15,6 @@ namespace sigc {
SIGC_FUNCTORS_DEDUCE_RESULT_TYPE_WITH_DECLTYPE SIGC_FUNCTORS_DEDUCE_RESULT_TYPE_WITH_DECLTYPE
} }
AspellConfig* spellcheck_config=NULL;
Glib::RefPtr<Gsv::Language> Source::guess_language(const boost::filesystem::path &file_path) { Glib::RefPtr<Gsv::Language> Source::guess_language(const boost::filesystem::path &file_path) {
auto language_manager=Gsv::LanguageManager::get_default(); auto language_manager=Gsv::LanguageManager::get_default();
bool result_uncertain = false; bool result_uncertain = false;
@ -38,6 +36,8 @@ Glib::RefPtr<Gsv::Language> Source::guess_language(const boost::filesystem::path
////////////// //////////////
//// View //// //// View ////
////////////// //////////////
AspellConfig* Source::View::spellcheck_config=NULL;
Source::View::View(const boost::filesystem::path &file_path): file_path(file_path) { Source::View::View(const boost::filesystem::path &file_path): file_path(file_path) {
set_smart_home_end(Gsv::SMART_HOME_END_BEFORE); set_smart_home_end(Gsv::SMART_HOME_END_BEFORE);
get_source_buffer()->begin_not_undoable_action(); 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()) { if(iter.backward_char()) {
auto context_iter=iter; auto context_iter=iter;
if(context_iter.backward_char()) { 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((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) { //Might have used space to split two words if(*iter==32 || *iter==45) { //Might have used space or - to split two words
auto first=iter; auto first=iter;
auto second=iter; auto second=iter;
if(first.backward_char() && second.forward_char()) { if(first.backward_char() && second.forward_char()) {
@ -638,12 +638,12 @@ void Source::View::spellcheck(Gtk::TextIter iter) {
auto start=iter; auto start=iter;
auto end=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; start=iter;
if(!iter.backward_char()) if(!iter.backward_char())
break; 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()) if(!end.forward_char())
break; break;
} }
@ -696,6 +696,7 @@ Source::GenericView::GenericView(const boost::filesystem::path &file_path, Glib:
get_source_buffer()->set_language(language); get_source_buffer()->set_language(language);
Singleton::terminal()->print("Language for file "+file_path.string()+" set to "+language->get_name()+".\n"); Singleton::terminal()->print("Language for file "+file_path.string()+" set to "+language->get_name()+".\n");
} }
spellcheck_all=true;
auto completion=get_completion(); auto completion=get_completion();
auto completion_words=Gsv::CompletionWords::create("", Glib::RefPtr<Gdk::Pixbuf>()); auto completion_words=Gsv::CompletionWords::create("", Glib::RefPtr<Gdk::Pixbuf>());
completion_words->register_provider(get_buffer()); completion_words->register_provider(get_buffer());

3
src/source.h

@ -98,11 +98,14 @@ namespace Source {
char tab_char; char tab_char;
std::string tab; std::string tab;
std::regex tabs_regex; std::regex tabs_regex;
bool spellcheck_all=false;
private: private:
GtkSourceSearchContext *search_context; GtkSourceSearchContext *search_context;
GtkSourceSearchSettings *search_settings; GtkSourceSearchSettings *search_settings;
static void search_occurrences_updated(GtkWidget* widget, GParamSpec* property, gpointer data); static void search_occurrences_updated(GtkWidget* widget, GParamSpec* property, gpointer data);
static AspellConfig* spellcheck_config;
AspellCanHaveError *spellcheck_possible_err; AspellCanHaveError *spellcheck_possible_err;
AspellSpeller *spellcheck_checker; AspellSpeller *spellcheck_checker;
void spellcheck(Gtk::TextIter iter); void spellcheck(Gtk::TextIter iter);

Loading…
Cancel
Save