commit 7d420669e6d13b384542e07b93ab14fdef4a1e3e
Author: Stephan Witt <[email protected]>
Date:   Thu Jul 16 21:26:41 2015 +0200

    #9496 factor out getting language from LFUN args or cursor position in 
speller LFUNs

diff --git a/src/Text3.cpp b/src/Text3.cpp
index 47a91b5..8867e10 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -486,6 +486,15 @@ bool Text::isRTL(Paragraph const & par) const
        return par.isRTL(buffer.params());
 }
 
+       
+namespace {
+               
+       Language const * getLanguage(Cursor const & cur, string const & lang) {
+               return lang.empty() ? cur.getFont().language() : 
languages.getLanguage(lang);
+       }
+
+}
+
 
 void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 {
@@ -2343,8 +2352,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        }
 
        case LFUN_SPELLING_ADD: {
+               Language const * language = getLanguage(cur, cmd.getArg(1));
                docstring word = from_utf8(cmd.getArg(0));
-               Language * lang;
                if (word.empty()) {
                        word = cur.selectionAsString(false);
                        // FIXME
@@ -2353,22 +2362,15 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                                selectWordWhenUnderCursor(cur, WHOLE_WORD);
                                word = cur.selectionAsString(false);
                        }
-                       lang = const_cast<Language *>(cur.getFont().language());
-               } else if (cmd.getArg(1).empty()) {
-                       // optional language argument is missing
-                       // use the language at cursor position
-                       lang = const_cast<Language *>(cur.getFont().language());
-               } else {
-                       lang = const_cast<Language 
*>(languages.getLanguage(cmd.getArg(1)));
                }
-               WordLangTuple wl(word, lang);
+               WordLangTuple wl(word, language);
                theSpellChecker()->insert(wl);
                break;
        }
 
        case LFUN_SPELLING_IGNORE: {
+               Language const * language = getLanguage(cur, cmd.getArg(1));
                docstring word = from_utf8(cmd.getArg(0));
-               Language * lang;
                if (word.empty()) {
                        word = cur.selectionAsString(false);
                        // FIXME
@@ -2377,20 +2379,15 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                                selectWordWhenUnderCursor(cur, WHOLE_WORD);
                                word = cur.selectionAsString(false);
                        }
-                       lang = const_cast<Language *>(cur.getFont().language());
-               } else if (cmd.getArg(1).empty()) {
-                       lang = const_cast<Language *>(cur.getFont().language());
-               } else {
-                       lang = const_cast<Language 
*>(languages.getLanguage(cmd.getArg(1)));
                }
-               WordLangTuple wl(word, lang);
+               WordLangTuple wl(word, language);
                theSpellChecker()->accept(wl);
                break;
        }
 
        case LFUN_SPELLING_REMOVE: {
+               Language const * language = getLanguage(cur, cmd.getArg(1));
                docstring word = from_utf8(cmd.getArg(0));
-               Language * lang;
                if (word.empty()) {
                        word = cur.selectionAsString(false);
                        // FIXME
@@ -2399,13 +2396,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                                selectWordWhenUnderCursor(cur, WHOLE_WORD);
                                word = cur.selectionAsString(false);
                        }
-                       lang = const_cast<Language *>(cur.getFont().language());
-               } else if (cmd.getArg(1).empty()) {
-                       lang = const_cast<Language *>(cur.getFont().language());
-               } else {
-                       lang = const_cast<Language 
*>(languages.getLanguage(cmd.getArg(1)));
                }
-               WordLangTuple wl(word, lang);
+               WordLangTuple wl(word, language);
                theSpellChecker()->remove(wl);
                break;
        }
diff --git a/src/WordLangTuple.h b/src/WordLangTuple.h
index 0e3391e..baf9338 100644
--- a/src/WordLangTuple.h
+++ b/src/WordLangTuple.h
@@ -29,7 +29,7 @@ class WordLangTuple {
 public:
        WordLangTuple() : lang_(0) {}
 
-       WordLangTuple(docstring const & w, Language * l)
+       WordLangTuple(docstring const & w, Language const * l)
                : word_(w), lang_(l)
        {}
 
@@ -47,7 +47,7 @@ private:
        /// the word
        docstring word_;
        /// language of word
-       Language * lang_;
+       Language const * lang_;
 };
 
 

Reply via email to