word = cur.selectionAsString(false);
}
lang = const_cast<Language *>(cur.getFont().language());
- } else
+ } 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);
theSpellChecker()->insert(wl);
break;
word = cur.selectionAsString(false);
}
lang = const_cast<Language *>(cur.getFont().language());
- } else
+ } 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);
theSpellChecker()->accept(wl);
break;
word = cur.selectionAsString(false);
}
lang = const_cast<Language *>(cur.getFont().language());
- } else
+ } 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);
theSpellChecker()->remove(wl);
break;
case LFUN_SPELLING_ADD:
case LFUN_SPELLING_IGNORE:
case LFUN_SPELLING_REMOVE:
- enable = theSpellChecker();
+ enable = theSpellChecker() != NULL;
+ if (enable && !cmd.getArg(1).empty()) {
+ // validate explicitly given language
+ Language const * const lang = const_cast<Language *>(languages.getLanguage(cmd.getArg(1)));
+ enable &= lang != NULL;
+ }
break;
case LFUN_LAYOUT: {